Storage area network methods and apparatus for automated file system extension

ABSTRACT

The invention provides an improved SAN of type having one or more host digital data processors, coupled to one or more storage devices. At least a selected one of the hosts includes a file system that effects access by the host to assigned storage devices. This can be, by way of non-limiting example, an AIX journal file system, a Veritas file system, a Unix file systems using Veritas volume manager or other host platform file system that oversees file and other data accesses between the host and those assigned devices. In response to a request by (or on behalf of) the selected host for extension of the file system, a manager (e.g., executing on a further digital data processor) assigns one of more further storage devices to that digital data processor. An agent associated with the first digital data processor that responds to the assignment by extending the file system to include the assigned storage device.

BACKGROUND OF THE INVENTION

The invention pertains to digital data processing and, moreparticularly, to storage area networks and methods of operation thereof.The invention has application, for example, in managing access by aplurality of digital data processors (e.g., web or file servers,graphical workstations and so forth) to a plurality of disk drives, diskarrays and other storage devices.

In early computer systems, long-term data storage was typically providedby dedicated storage devices, such as tape and disk drives, connected toa data central computer. Requests to read and write data generated byapplications programs were processed by special-purpose input/outputroutines resident in the computer operating system. With the advent of“time sharing” and other early multiprocessing techniques, multipleusers could simultaneously store and access data—albeit only through thecentral storage devices.

With the rise of the personal computer (and workstation) in the 1980's,demand by business users led to development of interconnectionmechanisms that permitted otherwise independent computers to access dataon one another's storage devices. Though computer networks had beenknown prior to this, they typically permitted only communications, notstorage sharing.

The prevalent business network that has emerged is the local areanetwork, typically comprising “client” computers (e.g., individual PCsor workstations) connected by a network to a “server” computer. Unlikethe early computing systems in which all processing and storage occurredon a central computer, client computers usually have adequate processorand storage capacity to execute many user applications. However, theyoften rely on the server computer—and its associated battery of diskdrives and storage devices—for other than short-term file storage andfor access to shared application and data files.

An information explosion, partially wrought by the rise of the corporatecomputing and, partially, by the Internet, is spurring further change.Less common are individual servers that reside as independent hubs ofstorage activity. Often many storage devices are placed on a network orswitching fabric that can be accessed by several servers (such as fileservers and web servers) which, in turn, service respective groups ofclients. Sometimes even individual PCs or workstations are enabled fordirect access of the storage devices (though, in most corporateenvironments such is province of server-class computers) on theseso-called “storage area networks.”

A drawback in prior art storage area networks arises in managing theproliferation of hosts and storage devices. Current solutions focus onsetting switches or switch-like interfaces on the network orinterconnect fabric between the hosts and storage device, electrically“blocking” certain hosts certain storage devices and so forth. A problemwith these solutions is that they permit only zoning or switch-likecontrol. Another problem is that, by their very nature, these solutionstend to be provider specific.

An object of this invention is to provide improved storage area networksand methods of operation thereof.

Further objects of the invention provide such methods and apparatus asfacilitate access to multiple storage devices, e.g., of varied types,from a plurality of servers or other host digital data processors, e.g.,running a variety of platforms.

Still further objects of the invention are to provide such methods andapparatus for managing administrator-defined and other policies forstorage networks, e.g., to facilitate access by multiple hosts tomultiple storage devices in a manner consistent with networkadministrators' wishes and without risk of unwanted access conflicts.

Yet still further objects of the invention are to provide such methodsand apparatus as facilitate the persistence of status and other datapertaining to storage area networks regardless of the metaphors underwhich that data is used and/or stored (e.g., object-oriented,relational, and so forth).

Another object of the invention is to provide such methods and apparatusas facilitate automated handling of events that occur with respect tostorage area networks and their componentry.

Yet other objects of the invention are to provide such methods andapparatus as facilitate visual representation of the storage areanetwork topology, componentry and status.

Still yet another object of the invention is to provide such methods andapparatus as facilitate administrator (or other operator) definition ofstorage area network policy (e.g., vis-à-vis assignment of storagedevices to hosts) and as facilitate notification of events occurringwith respect thereto.

These and other objects of the invention are evident in the drawings andin the description that follow.

SUMMARY OF THE INVENTION

LUN Management

The foregoing are among the objects attained by the invention whichprovides, in one aspect, novel storage area networks (SANs) and methodsof operation thereof. For example, in one aspect, the invention providesimprovements on a SAN of the type having a plurality of hosts coupledvia a network or other interconnect with one or more storage units. Theimprovement, according to this aspect of the invention, comprises amanager process, device or other functionality in communication with aplurality of agent processes, devices or other functionality, each ofwhich is associated with a host. The agents identify attributes of (i)their associated hosts, (ii) the interconnect (or portion thereof) towhich that host is coupled, and/or (iii) storage units to which thathost is coupled via the interconnect. The manager responds to theseattributes identified by the agents to manage the SAN.

The manager according to related aspects of the invention can beimplemented on a first digital data processor, while the hosts areimplemented on further digital data processors. These digital dataprocessors can be coupled via a first network, e.g., an IP or othernetwork, to support communications between the manager and the agents.Such communications can be further effected, according to one aspect ofthe invention, utilizing an object request broker (ORB). Theinterconnect, according to further related aspects of the invention,comprises a second network, e.g., SCSI and/or fiber channel basedfabric, separate from the first network.

According to still further aspects of the invention, the managerprovides one or more management functions including, by way ofnon-limiting example, interfacing with a SAN administrator, resolvingSAN topology, managing storage device logical unit number assignment,and managing extension of host file systems. The agents can serve asproxies (or agents) for the manager, effecting functionality on itsbehalf at the host level. This functionality can include SAN componentattribute collection, LUN masking control, host file system monitoring,and file system extension implementation.

Further aspects of the invention provide systems as describe above inwhich one or more agents utilize their associated hosts to query andotherwise gather information regarding storage devices to them (thehosts) via the interconnect. This information can include the number oflogical units present on each physical storage device, theidentification of the physical storage device and its respective logicalunits, and/or the storage capacity of each logical unit. Queries fromthe hosts to the devices can be effected via using the protocol of theinterconnect, e.g., a SCSI protocol for a fiber channel interconnect.

In related aspects of the invention, the manager correlates informationcollected by the agents from their respective hosts, e.g.,disambiguating identifies of logical units in the storage devices and,more typically, on the SAN, from potentially only partial (orincomplete) information supplied by each agent. In accord with policiesestablished by the SAN administrator (and entered into the manager,e.g., via its graphical interface), the manager assigns logical units tothe hosts. According to related aspects of the invention, the managercommunicates those assignments to, and effects them via, the agents.

Further related aspects of the invention provide SAN systems asdescribed above in which each agent imposes logical unit number (LUN)assignments on their respective agents, e.g., via filters at the adapterlayer. This facilitates communication between the host and its assignedstorage devices by obviating the need for it (the host) to consult themanager for each read/write operation to those or other (e.g.,unassigned) storage devices.

In still further aspects, the invention provides SANs as described abovein which the manager includes a graphical user interface (GUI) fordisplay of SAN topology and/or for input of administrator-defined SAN“policy,” by way of non-limiting example, LUN assignment, un-assignment,and file extension policy. The GUI can provide a plurality of views,each for example with icons or text representations (collectively,“icons” or “graphical objects”) representing hosts, storage devices (orlogical units), associations therebetween (e.g., assignment oraccessibility), and/or properties thereof.

Assignment of a LUN to a host is permitted throughadministrator/operator-selection of a host icon and a LUN icon on theGUI display. This is beneficially facilitated, according to one aspectof the invention, by selectively activating the icons representing theLUNs only after the icon for a specific host has been selected and,then, only activating icons for those LUN that are accessible to theselected host and otherwise suitable for assignment.

In related aspects of the invention, the GUI provides icons representingSAN operations, such as assignment, unassignment, and so forth. Theseicons are beneficially activated, for example, only when icons forcorresponding hosts, storage units and/or other SAN components have beenselected. For example, an icon for executing a LUN-to-host assignmentoperation is activated only after both a host and a LUN are selected.This can likewise be true of a LUN-to-host unassignment operation. A GUIwith such features advantageously facilitates administrator action,minimizing the number input decisions on the part of an administrator aswell as the number of key strokes, “mouse” clicks, or other operatorinput device operations.

In further related aspects of the invention, a topological, hierarchicalor enumerated (i.e., listing) display of SAN components can beaccompanied by a display of component properties (e.g., identity of LUNsin a physical storage device, and so forth). The latter display, too, isbeneficially generated only upon selection of a specific component inthe former display. In a related aspect, data necessary for generatingthe latter (i.e., a component property) display is retrieved, forexample, from a local or remote database, only upon selection of aspecific component in the former display.

Further related aspects of the invention provide a system as describedabove in which the GUI provides for selective display of storagedevices, or logical units, depending upon their storage capacity orother quantitative attributes. In this regard, the GUI permitsoperator/administrator specification of a numerical range for use by themanager in filtering storage device display. This aspect of theinvention can be used to display, for example, logical units having astorage capacity, say, of between four and six gigabytes or, forexample, greater than ten gigabytes.

According to further aspects of the invention, the manager of a SAN asdescribed above notifies the operator/administrator of SAN events suchas, by way of non-limiting example, failure or disconnection of astorage device from the SAN. The manager permits specification (e.g., bythe administrator) of a delay interval (or “alert interval”) between afirst and subsequent notifications of an event. Upon receipt of an eventnotification from an agent, for example, the manager can implement thismechanism by determining, e.g., from a database or otherwise, whether aprevious notification of was made to the administrator. If so, furthernotification is made only if the current time follows that of theprevious notification by the specified alert interval.

In further aspects, the invention provides a SAN as described above inwhich the manager maintains policies for handling events pertaining to(i) attributes of at least selected hosts and/or (ii) establishment ofrelationships of at least selected hosts with one or more storage units.A policy engine included within the manager responds to notification ofat least a selected event by effecting execution of an action accordingto the policy maintained therefor.

In a related aspect, the policy engine includes a module, hereinreferred to as an automation module, that receives events from theagents and associates each event with a policy applicable to that eventto form an [event, policy] pair. For example, as discussed in moredetail below, when an agent file system monitor detects that theutilized portion of a file system associated with a managed host hasexceeded a pre-defined threshold, it transmits an event notification tothe policy engine. The policy engine determines, based on a pre-definedpolicy, whether the file system of this managed host should be extended.If the pre-defined policy calls for the extension of the file system,the policy engine identifies which LUN should be utilized and requeststhat a LUN manager assign the identified LUN to that host.

Further aspects of the invention provide systems as described above inwhich the manager maintains in a relational database a topological orother representation of the storage area network, or aspect thereof. Inresponse, for example, to notification from an agent of addition of acomponent to the SAN, the manager instantiates an object orientedprogramming (OOP) object reflecting attributes of the component. Thisobject, referred to below as a “manager” object can also include, forexample, method members for collecting those attributes (e.g., fromother databases or stores in the manager, or elsewhere). The managerinstantiates one or more further objects, referred to as “peer” objects,that store persistable data from a corresponding manager object. Thesepeer object are mapped into the relational database and, thereby,facilitate transfer of the persistable data to and from it.

Event Processing

The invention provides in other aspects improvements on a digital dataprocessing apparatus of the type that manages a SAN and maintains aninternal representation thereof, e.g. of the topology of the SAN. Theimprovements include providing a first queue with entries representingtasks and a second queue with entries representing data for processingin connection with those tasks, where the data in the second queue isgrouped in accord with the task to which it corresponds. A managerservice updates the internal representation of the SAN (e.g., therepresentation of the SAN topology) by executing the tasks in the firstqueue one at a time, for example, atomically using a single-threadedprocess.

Further aspects of the invention provide improved apparatus as describedabove in which the data contained in the second queue constitute eventnotifications, e.g., generated by a detection service in response tochanges in the SAN. That service can receive, for example, from agentsassociated with host digital data processors on the SAN, informationregarding the hosts and storage devices to which they are connected viaan interconnect. In related aspects of the invention, the detectionservice discerns changes in the SAN and generates notifications bycomparing information or “scans” from the agents with previously storedscans. One or more notifications can be generated corresponding to eachchange and transmitted to the manager for placement on the queues. Thenotifications can reflect, for example, that a new host or storagedevice has been added to the SAN, that the attributes of such a devicehave been modified, that a device is missing, and/or that a relationshipbetween a storage device and host has changed.

Further aspects of the invention provide improved apparatus as describedabove in which the manger service selectively adds notificationsreceived from the detection service to the second queue until receipt ofa selected notification, e.g., indicating that the underlying scan iscomplete. The service manger can, upon such receipt, generate foraddition to the second queue an object-oriented programming (OOP)object, or other construct, execution of which effects processing of theprior notifications for the same underlying change detected by theservice manager.

Still further aspects of the invention provide apparatus as describedabove in which the first (or task) queue is processed on afirst-in-first out (FIFO) basis. In related aspects, the tasks in thatqueue can be treated on a priority basis, e.g., with high priority tasksbeing executed prior to those of lower priority.

Conflict Resolution in Event Processing

Further aspects of the invention provide an improved SAN, e.g. of thetype described above, that includes a first element that maintains afirst representation of the SAN, and a second element that maintains asecond representation of the SAN. The first element generatesnotifications of events in the SAN, e.g., addition or removal ofcomponents or relationships between components. The second elementresponds to such notifications by accessing the first representation(e.g., via the first element) and updating the second representation.

The first element can be, for example, a detection service of the typediscussed above. This maintains, according to aspects of the invention,a representation of the SAN comprising a one-deep history of scansreceived from the agents. The second element conversely can be theaforementioned manager service. It maintains, as noted above, atopological representation of the SAN. In executing tasks andnotifications in the queues described above, the service manager service(or “second element”) can access the SAN representation (e.g., scanhistory) maintained by the detection service.

In certain instances, the event notification may prove inconsistent withthe topology representation maintained by the manager service, e.g., aswhere the notification indicates that a relationship has been addedbetween two SAN components and the topology representation does notinclude one of those components. Or, for example, if the eventnotification indicates that a component has been added to the SAN andthe detection service's representation includes no such component. Insome such instances, according to aspects of the invention, the managerservice disregards the event notification. In other instances, themanager service instigates a recovery of the topology representation,e.g., by copying all or a portion of detection service representation.In the latter regard, recovery can be targeted to objects representing aspecific device (and its relationships with other devices) in connectionwith which the inconsistency arose or, for example, to objectsrepresenting components of the SAN in a region of that device, thereby,speeding the recovery process.

Event Notification with Data

Still further aspects of the invention provide an improved SAN asdescribed above in which the detection service (or first element)provides data, along with the event notification. That data ispreferably sufficient for the manager service (or second element) toupdate the second representation but, in any event, is at leastsufficient to avoid the need for the manager service to accessinformation in the first representation in order to update the secondrepresentation. Thus, for example, along with notification of a missingstorage device, the discover engine can transmit an identifier of thedevice and any other information necessary for the manager service toupdate its SAN topology database without a need to request additionaldata from the discover engine.

Further aspects of the invention provide a SAN as described above inwhich the notification and event are contained in an object-orientedprogramming “object” or other construct suitable for carrying therequisite message between the detection service and manager service.

A SAN constructed and operated in accord with these aspects of theinvention allows for maintenance of a valid topological representationof the SAN in the manager service, without a need to lock the scanrepresentation in the detection service, even where notifications aregenerated asynchronously with respect to one another and where multiplenotifications may be queued for processing. It also avoids the necessityof conflict resolution of the type described above.

Virtual SAN Determination

Still further aspects of the invention provide a storage area network(SAN) in which one or more host digital data processors are coupled toone or more storage devices (e.g., LUNs) by an interconnect, e.g., afiber channel-based fabric. Switches or switch-like interfaces on theinterconnect fabric define zones or regions in which certain hosts canaccess certain storage devices, but not other storage devices. Thus, forexample, a switch in the fabric may effect two regions: one over which afirst host can access a single port on each storage devices A and B; andanother over which a second host can two ports on storage device B.

Scanners, e.g., operating within agents associated with the hosts,collect information regarding the regions and, more particularly, thehosts, storage devices and interconnect elements that make them up.Continuing the above example, a scanner operating on or in conjunctionwith the first host reports that it can access port 1 on storage deviceA and port 1 on B via the switch. A scanner operating on or inconjunction with the second host reports that it can access ports 1 and2 on storage device B via the switch.

A manager operating, for example, on a further digital data processordisambiguates information from the regions and discerns the topology ofthe portion of the SAN spanned by the regions. Thus, it identifies as avirtual SAN elements from regions that have at least one common storagedevice port, or other interconnect endpoint, with at least one otherregion. In the example above, the manager identifies, as a virtual SANthe first and second hosts, the switch, and storage devices A (port 1)and B (ports 1 and 2)—since these are the combined elements of the tworegions have an endpoint in common, to wit, port 1 of storage deviceB.

Maintenance and Removal of SAN Change Histories

The invention provides in other aspects improved storage area networks(SANs) that maintain an internal representation of the SAN in a firstdata store and that maintains a separate store identifying changes tothe SAN. A process executing, for example, in the manager digital dataprocessor of the type described above utilizes the first store togenerate a display, e.g., on the operator/administrator console, of theSAN topology, its components and/or the relationships among thosecomponents (collectively, “topology”). The manager responds toinformation in the second store to identify on the display changes inthe SAN.

In related aspects, the invention provides an improved SAN as describedabove in which the digital data processor selectively discontinuesidentifying changes on the topology display. This can be in response,for example, to an operator/administrator request. At the same time, orotherwise in connection therewith, the digital data processor can removethe corresponding history information from the second store.

Further related aspects of the invention provide improved SANs asdescribed above in which the internal representation (or model) of theSAN is represented by objects or other data constructs (collectively,“model objects”) maintained in the first store. Each of those modelobjects can represent, for example, a respective component of the SAN ora respective interrelationship between components of the SAN. And, eachcan identify the respective component/interrelationship and itsattributes.

The second store can likewise maintain, according to further aspects ofthe invention, objects or other data constructs (collectively, “historyobjects”) that represent changes to the SAN. Each of those objectscorresponds to a respective object in the first store or component inthe SAN (though, there typically are not as many history objects asmodel objects or SAN components).

The history objects can reflect a status of their respective components,e.g., as “new,” “suspect,” “missing” or otherwise. The designation “new”applies, for example, the SAN components or interrelationships that havebeen added since the last topology display (or operator/administrator“clear history” command); the designation “suspect” tocomponents/interrelationships whose status is inconsistently reported,e.g., by the aforementioned agents and their respective hosts; and thedesignation “missing” to component/interrelationships that have beenremoved since the last topology display (or operator/administrator“clear history” command). Further statuses that can be represented bythe history objects include, for example, “broken” indicating that thecomponent is not functioning properly; “attribute changed” indicatingthat an attribute of the component has since the last topology display(or operator/administrator “clear history” command); “needs attention”indicating that the component, though functioning properly, requiresoperator attention; and “moved” indicating that the component has beenmoved in the topology since the last display (or operator/administrator“clear history” command).

Related aspects of the invention provide a SAN as described above inwhich the status reflected by a history object is a function of thecorresponding component's prior status and its condition, e.g., asreported by a scanner or discerned by the discover engine. Thus, forexample, an object whose prior status was “broken” and which is reportedby the discover engine as being “new” is assigned a status of “suspect”in a corresponding history object.

By using separate stores for the SAN representation and the changehistory, indicia of changes in the topology can generated rapidly,without traversing the entire internal representation. Clearing of thechange history can likewise be accomplished quickly, again, withouttraversing the internal representation.

In yet further aspects, the invention provides methods as describedabove in which tasks on the second queue derive not only from eventnotifications received from the detection service, but also from SANoperations, e.g., device labeling commands, requested by the systemoperator/administrator.

LUN Selection For File System Extension

Further aspects of the invention provide an improved SAN of type havingone or more digital data processors, e.g., the aforementioned hosts, andone or more storage devices. At least a selected one of the hostsincludes a file system that effects access by the host to assignedstorage devices. This can be, for example, a conventional AIX or otherhost platform file system that oversees file and other data accessesbetween the host and those assigned devices. That host can beassociated, according to these aspects of the invention, with lower andupper capacity bounds for purposes of file system extension. In responseto a request by (or on behalf of) the selected digital data processorfor extension of the file system, the manager assigns one of morefurther storage devices to that digital data processor.

In related aspects, the invention provides a SAN of the type describedabove having a plurality of storage units and a plurality of hostdigital data processors coupled to those storage units via aninterconnect. Agents associated with each of the hosts digital dataprocessors identify attributes of any of (i) the associated host, (ii)the interconnect to which that host digital data processor is coupled,and (iii) storage units to which that host digital data processor iscoupled. The agents also respond to assignment, by a manager digitaldata processor, of a storage unit to the associated host digital dataprocessor(s) by preventing access by that host digital data processor toothers of said storage units in the SAN. At least a selected one of thehosts includes a file system and is associated with lower and uppercapacity bounds for purposes of file system extension, as describedabove. In response to a request by the agent of that host for extensionof the file system, the manager assigns one of more further storagedevices (e.g., from among a pool of storage devices accessible to thathost and otherwise available for assignment to it) to that selected hostdigital data processor.

Further aspects of the invention provide a SAN as described above inwhich the manager responds to the file system extension request byidentifying a storage device from among the plurality of further storagedevices accessible to the first digital data processor having a capacityin a range between the lower capacity bound and the upper capacity bound(or, in the case of a striped RAID file system, a range between thelower capacity bound divided by (s) and the upper capacity bound dividedby (s), where (s) is the number of stripes), and assigns that storagedevice to the selected host digital data processor. Where more than onestorage device meets these capacity criterion, the manager can assign tothe selected host the storage device having the greatest capacity.

In related aspects, the invention provides a SAN as described above inwhich the manager responds to the file system extension request byidentifying and assigning to the selected host a plurality of storagedevices whose combined storage capacity that equals or exceeds the lowercapacity bound (divided by (s), for a striped RAID file system). Suchidentification and assignment of multiple devices can be effected, forexample, in instances where no single storage device, itself, hasadequate capacity. Moreover, where such identification and assignment iseffected, the manager can select among the storage devices on the basisof decreasing size. Thus, it assigns storage devices with larger storagecapacities before assigning those with smaller storage capacities.

Still further aspects of the invention provide SANs as described abovein which the manager removes from selection any storage device whoseassignment to the first digital data process, in response to a previousfile extension request, had failed. Related aspects of the inventionprovide such SAN in which the manager assigns only storage devices oftypes, e.g., pre-selected by an operator/administrator or otherwise.

Further aspects of the invention provide SAN, e.g., of the typedescribed above, that assigns storage devices for purposes of filesystem extension based on a RAID file system type of the selected hostdigital data processor and, particularly, that determines a number ofsame-sized storage devices to be assigned to the selected host based onthat file system type. For example, in one related aspect, the inventionprovides such a SAN in which the number of assigned storage devices (n)for a RAID file system having no stripes and a number of mirrorredundancies (m) is determined in accord with the relation n=m+1.

A related aspect of the invention provides a SAN as described above inwhich the number (n) of same-sized storage devices assigned to a hostdigital data processor having (s) stripes and no mirror redundancies isdetermined in accord with the relation n=s.

A still further aspects of the invention provides a SAN as describedabove in which the number (n) of same-sized storage devices assigned toa host digital data processor having (s) stripes, each with (m) mirrorredundancies is determined in accord with the relation n=s*(m+1).

A still further aspects of the invention provides a SAN as describedabove in which the number (n) of same-sized storage devices assigned toa host digital data processor having (m) mirror redundancies spread over(s) stripes in accord with the relation n=(m+1)*s .

Rendering a SAN Topology

In further aspects, the invention provides improvements on a storagearea network (“SAN”) of the type that includes one or more digital dataprocessors (e.g., the aforementioned hosts) that are coupled forcommunication with one or more storage devices (e.g., LUNs) over aninterconnect. The improvement provides a mechanism for hierarchicallydisplaying, e.g., on the administrator console or other output device,portions of the SAN topology. Particularly, the SAN is divided intosegments to facilitate display and, thereby, locating failing devices inthe SAN. A graphical user interface displays icons for each SAN anddivides the topology into submaps, i.e., a screen that containsicons—where double clicking on an icon will show another submap if theicon is not a leaf node. The SAN is divided into several types ofsegments: a switch segment contains an icon representing an individualswitch and the devices directly connected to the switch; a switch portconnected to multiple devices is represented by a loop segment. Thesegment contains an icon for the switch and the devices.

According to further aspects of the invention, the improvement providesa process that generates for application to the output device aplurality of graphical objects that represent “segments” of the SANand/or components of the SAN, along with the interconnections betweenthem. Thus, for example, a first graphical object displayed on theoutput device can represent a first segment of the SAN. A secondgraphical object can represent either a second segment of the SAN or acomponent (e.g., host or storage device) of the SAN. And, a thirdgraphical object can represent the portion of the interconnect thatcouples the segments/component represented by the first and secondgraphical objects. The process selectively responds tooperator/administrator selection of any of the graphical objects thatrepresent a segment by regenerating the display to depict theinterconnected segments and/or components that make up that segment.

A component, in this context, refers for example to a storage device ora host digital data processor, while a segment refers to portion of theSAN containing multiple such interconnected components, whetherrepresented as (i) individual components and/or (ii) one or more furthersegments.

Related aspects of the invention provide a SAN as described above inwhich the process responds to operator selection of a graphical objectrepresenting a segment or component by displaying the attributesthereof. For example, in the case of selection of an object representinga storage device, the process can display the type and capacity of thedevice, its LUN identifier, and so forth. In the case of selection of anobject representing a segment, the process can display its location, anenumeration of its components, and so forth.

Further aspects of the invention provide a SAN as described above inwhich the process displays the aforementioned graphical objects in amain presentation panel (or window) and displays further graphicalobjects—referred to here as “navigational” objects—in one or more otherpresentation panels. These navigation objects, too, represent componentsor segments of the SAN and, indeed, can correspond to the graphicalobjects displayed in the main panel. Alternatively, or in addition, thenavigational objects can correspond to the SAN root or other segmentsand or components that are not direct descendants of those representedby the graphical objects in the main panel.

Still further aspects of the invention provide SANs as described abovein which a component having a selected status, e.g., failed, is depictedin alternate form, e.g., with color highlighting, blinking, or so forth.Segments that contain such a component can likewise be displayed in analternate form to facilitate operator identification of the component.Related aspects of the invention provide use of such alternate displayto highlight portions of the interconnect that have failed or areotherwise have a selected status.

Hierarchical File System Extension Policy

Further aspects of the invention provide a storage area network (SAN)that includes a plurality of digital data processors, each with a filesystem that effects access to one or more storage devices coupled to theSAN, for example, via the aforementioned interconnect fabric. A process(e.g., executing in the aforementioned SAN manager) responds to a filesystem over-extension notification from at least a selected one of thedigital data processors, e.g., by assigning a further storage device tothat digital data processor. The type of response is, more particularly,determined in accord with a hierarchically defined policy inherited, inwhole or in part, from one or more hierarchical groups of which thedigital data processor is a member.

In a related aspect, the invention provides a SAN as described above inwhich the policy used by the process in responding to the notificationis defined, in part, by a first grouping to which that digital dataprocessor belongs and, in part, by a second grouping to which thatdigital data processor belongs. Each of the groups is at a respectivehierarchical level: the first group at a first level, and the secondgroup at a second level. The first level is higher then the second, andthe first group includes the digital data processor(s) of the secondgroup, as well as at least one other digital data processor.

A still further related aspect of the invention provides a SAN asdescribed above in which the first group is associated with a first setof attributes and the second group is associated with a second set ofattributes, e.g., which form a subset of the first group. The first setdefines a default policy for digital data processors included in thefirst group. The second set overrides corresponding attributes of thefirst group and, along with the inherited (but not overridden)attributes, defines a policy for second group.

By way of non-limiting example, according to one aspect of theinvention, the selected digital data processor can be a member ofseveral hierarchical groups: a domain level group that defines thedefault file extension policy for all digital data processors in theSAN; a host-group level group that overrides some or all of the domainlevel attributes for a selected subset of the SANs digital dataprocessors; and a host level “group” that overrides some or all of theattributes for a given digital data processor. By way of furthernon-limiting example, policy-defining attributes can include whether thefile system of the digital data processor is being monitored, whetherthe file system can be extended, a threshold value for extension,storage devices onto which the file system can be extended, an extensionminimum size, an extension maximum size, and an alert interval defininghow often event notification is to be provided.

Further aspects of the invention provide a SAN as described above inwhich the policy extends down to the level of the file system (i.e. aso-called file system level “group”), such that the manager process canrespond to a notification from a host digital data processor based on apolicy for a specific file system within that digital data processor.That policy can be inherited, in part, from each of the domain levelgroup, the host-group level group, and the digital data processoritself. It can also be based on attributes specified for that specificfile system, which override corresponding inherited attributes.

Still further aspects of the invention provide a SAN as described abovein which a hierarchical policy as described above is implemented withrespect to other components of the SAN.

Display and Management of File System Extension Policy Hierarchy

Further aspects of the invention provide a SAN, e.g., as describedabove, that includes one or more of the aforementioned host or otherdigital data processors, each having a file system that effects accessto one or more storage devices. Consistent with the discussion above,each processor can be associated with multiple groups from respectivelevels of a hierarchy, e.g., a first processor group and a secondprocessor group descendant from the first processor group.

As above, the first group can be associated with a default fileextension policy (e.g., with attributes assigned outright to that groupand/or from a group at a still higher hierarchical level). The secondgroup can be associated with the default policy by inheritance, whichassociation can be overridden in whole or in part by attributesspecifically assigned to that level. Continuing the example above, thegroups can include any combination of the aforementioned domain levelgroup, host-group level group, host “group,” and file system “group.”

A process, e.g., executing on the aforementioned SAN manager, includes agraphical user interface that displays the processor groups as ahierarchical tree. Along, for example, with the identities of theprocessor groups, nodes of the displayed tree list attributes of thepolicy defined for each respective group. As above, those attributes caninclude, by way of non-limiting example, whether the file system of thedigital data processor is being monitored, whether the file system canbe extended, a threshold value for extension, storage devices onto whichthe file system can be extended, an extension minimum size, an extensionmaximum size, and an alert interval defining how often eventnotification is to be provided.

In related aspects, the invention provides a SAN as described above inwhich the process displays the hierarchical tree and its associatednodes in a first panel on a display device, such as theoperator/administrator console. In a second panel, the process displaysinterface graphical objects, e.g., list controls, dialog boxes or othereditable fields, for modifying one or more attributes of a file systemextension policy associated with at least a selected one of theprocessor groups.

Further aspects of the invention provide a SAN as described above inwhich the tree display includes at least one node identifying at leastone overriden attribute, i.e., one attribute that will be overridden inthe second processor group.

LUN Masking on Windows™ NT and Windows™ 2000 Hosts

Further aspects of the invention provide a storage area network (SAN) asdescribed above that uses adapter layer filters to implement logicalunit number (LUN) assignments—or, put another way, LUN masking (andunmasking)—in the host digital data processors.

According to one such aspect of the invention, the invention provides animproved SAN of the type having one or more digital data processors,e.g., hosts of the type described above, in communication with one ormore storage devices, e.g., LUNs. The host (or other digital dataprocessor) is of the type with an operating system that utilizes (i) aport driver to define a software interface between a class driver and anadapter to which one or more of the storage devices are coupled, and(ii) a class driver that claims storage devices for access, e.g., by theoperating system and any applications programs executing therein, byinvoking the port driver to which the host is coupled, e.g., via theinterconnect fabric. The improvement comprises a software filter incommunication with the port driver and the class driver. That filterintervenes to block claiming of one or more selected storage devices bythe class driver.

In a related aspect, the invention provides a SAN as described abovewhere the host executes the Windows NT™ operating system and the filterblocks claiming of a selected storage device by returning a failure codeto the class driver in response to its invocation of the port driver forpurposes of claiming that storage device.

In a further related aspect, the invention provides a SAN as describedabove where the host executes the Windows 2000™ operating system and thefilter blocks claiming of a selected storage device by blocking claimrequests by the class driver.

A SAN manager or other functionality is provided, according to furtheraspects of the invention, for transmitting to the filter identifiers,e.g., LUN IDs, of storage devices for which claiming is to be any ofblocked or unblocked. In a preferred such aspect, the SAN manager orother functionality loads the filter with identifiers of storage devicesfor which claiming is not to be blocked, and the filter blocks claimingof storage devices—particularly, fiber channel storage devices—otherthan those so identified.

Further aspects of the invention provide a SAN as described above whichprovides for blocking access to, or masking, a storage device to whichaccess had previously not been blocked. According to these aspects, theagent or other functionality (e.g., resident on the host) masks thestorage device by invalidating a disk object previously created for thatdevice. The device can later be unmasked, e.g., in response to anoperator/administrator request, by validating that disk object.

Still further aspects of the invention provide a SAN as described abovewhich provides for unmasking a storage device to which access hadpreviously been masked. According to these aspects of the invention, thefilter responds to the manager's identifying such a storage device to beunmasked by invoking the port driver for purposes of claiming the one ormore storage devices identified by it as coupled to the selected digitaldata processor. In this regard, the filter duplicates the operation ofthe class driver, which, at system start-up, itself invokes the portdriver to claim the storage devices (listed by the port driver as)coupled to the host.

Association of LUN ID with Physical Device Object Name

Further aspects of the invention provide an improved storage areanetwork (SAN) of the type having a digital data processor, e.g., a host,in communication with one or more storage devices, e.g., a LUN and,further, of the type having a plug-and-play (PNP) manager that generatesan event in response to a change in status of at least one of thestorage devices.

The improvement is characterized, according to one aspect of theinvention, by at least a selected process, that executes on the host (orother digital data processor), which references at least a selected oneof the storage devices using a previously assigned logicalidentification, e.g., a LUN ID. The improvement is further characterizedby the selected process responding to an event generated by theplug-and-play manager by querying for information the storage device (oran interface thereto) with respect to which the event was generated.From that information, the process generates a logical identificationfor the device.

In related aspects, the invention provides a SAN as described above inwhich the PNP manager generates, along with the event, a physicalidentification of the storage device with respect to which the event wasgenerated. The improvement is characterized by the selected processreferencing that physical identification in querying the storage device,or an interface thereto, for the aforementioned information. In afurther related aspect of the invention, the PNP manager executes atleast in part in kernel mode, while the selected process executes inuser mode. The selected process registers for, and is notified of, theevent in user mode.

Further aspects of the invention provide a SAN as described above wherethe event signaled by the PNP signifies any of coupling or decoupling ofa storage device to/from the host.

Yet still further aspects of the invention provide a SAN as describedabove in which the PNP manager generates, along with the event, areference to a data structure containing data regarding the storagedevice with respect to which the event was generated. The improvementprovides for parsing of that data by the selected process to determinean address of the storage device. That address can be used, for example,in querying the storage device or its interface (e.g., the port driveror adapter).

Fiber Channel Device Determination in Kernel Mode

The invention provides, in further aspects, an improved storage areanetwork (SAN) of the type described above that has a host or otherdigital data processor whose ports are coupled to peripheral devicesthat include fiber channel or other SAN-class storage devices. Processesexecuting on the host (or other digital data processor) generaterequests for access to those peripheral devices. The improvement ischaracterized by a persistent store that identifies ports coupled toSAN-class storage devices. This store can be loaded, for example, by aprocess that executes on the host in user mode. The improvement isfurther characterized by filter, such as the aforementioned filterdriver, that executes on the host in kernel mode to block access toselected ones of those SAN-class storage devices.

In related aspects, the invention provides a SAN as described above inwhich the store, which can be retained as part of the host's Windows™registry, identifies ports that are coupled to a specific class of SANstorage devices, notably, fiber channel storage devices. The filter,commensurately, blocks access to selected ones of the fiber channeldevices. Further aspects of the invention provide a SAN as describedabove in which the filter does not block or, more simply, passes,requests for access to peripheral devices not identified as comprisingSAN-class storage devices.

Still further aspects of the invention provide a SAN as described abovethat includes an element, for example, the aforementioned SAN manager,that designates SAN-class storage devices as assigned (or unassigned) tothe host. The filter, according to this aspect, passes requests foraccess to peripheral devices that are identified as comprising SAN-classstorage devices and that are designated as assigned to the host, whileblocking access to those that are not assigned to the host.

Yet still further aspects of the invention provide a SAN as describedabove in which the host executes a user mode process, e.g., as a finalphase of host boot-up, which identifies ports coupled withSAN-class—and, more specifically, fiber channel—storage devices. Theuser mode process stores that information to the registry for use by akernel mode processes running during earlier phases of a subsequent hostboot-up.

Related aspects of the invention provide a SAN as described above inwhich the host includes a kernel mode process that executes, e.g.,during an initial phase of host boot-up, that validates identificationsmade by the user mode process during a prior boot-up.

Still further aspects of the invention provide a SAN as described abovein which the filter passes requests for access to peripheral devices forwhich the kernel mode process indicates the identification is not valid,unless those requests comprise claims for access to peripheral devicesthat are hard disk devices that are not designated as assigned to thedigital data processor.

Ensuring Validity of Data from the Scanners

Still further aspects of the invention provide a SAN, e.g., of the typedescribed above having a plurality of components such as host digitaldata processors and storage devices. A store, e.g., resident on amanager digital data processor, contains one or more objects (or otherdata constructs) that represent information gathered from the hosts,i.e., scans. Further such objects represent components in the SAN and/orrelationships between and among those components. Though these objectscan be of the same type, they are referred to here for convenience asscan objects, component objects and relationship objects, respectively.A discover engine or other functionality executing on the managerdigital data processor validates information gathered from a selectedhost concerning a selected component or relationship based on a scanobject, if any, that is associated with a component object orrelationship object, respectively, corresponding pertaining to theselected component or relationship.

In related aspects, the invention provides a SAN as described above inwhich a scanner executing on each of the hosts gathers information—e.g.,a “scan”—regarding that host and the storage devices (or other SANcomponents) that host can “see,” as well as relationships therebetween.The discover module responds, according to related aspects of theinvention, to selected changes discerned from a scan by validating theinformation from which the change was discerned. This can beaccomplished by traversing the component objects or relationship objectsto find those for the same component or relationship, respectively,underlying the apparent change. Scans containing information regardingthat component or relationship are identified via the scan objectsassociated with any matching component or relationship objects.

For example, upon discerning from a scan that a storage device hasapparently been removed, the component objects can be traversed todetermine which contain information regarding the apparently removeddevice. Scans providing information from which the change can bevalidated are identified via association of their respective scanobjects with any matching component objects founds during traversal.Those other scans can be checked to see if they are in accord with thescan in which the change was discerned and/or the scanners thatgenerated the scan(s) can be re-executed. Alternatively, according toone aspect of the invention, the apparent change is ignored upon findingany such other scans.

Further aspects of the invention provide a SAN as described above inwhich the store maintains objects representing component attributes, inaddition to objects representing scans, components and relationships.All of these objects, according to other aspects of the invention, canreference corresponding data in tables of attributes, scans, components,and relationships, respectively. At least one of the objects, moreover,can include a unique identifier referencing the corresponding table andthe data field therein.

Yet still further aspects of the invention provide SAN as describedabove wherein the discover engine validates only selected changesdiscerned from the scan. Thus, for example, according to one aspect ofthe invention, such an engine can validate changes representing removalor decoupling of storage devices and/or removal (or missing)relationships between components.

User Interface Architecture

The invention provides, in still further aspects, an improvedarchitecture of a digital data processor of the type used in a storagearea network (SAN). The digital data processor, which can be theaforementioned manager digital data processor, executes a process,herein referred to as a manager process, to maintain a representation ofthe SAN topology or at least an attribute thereof. A graphical outputdevice displays the SAN representation. A further process, hereinreferred to as a user interface process, controls the output device forpurposes of displaying that representation. An interface element,residing on the manager digital data processor or another dataprocessor, effects retrieval of the SAN representation, for example, inresponse to a request from the user interface process. It transmits thatrepresentation to the user interface process for display on thegraphical output device.

In a related aspect, the invention provides a SAN as described above inwhich the interface element includes a requester that receives a requestfrom the user interface process for retrieval of the SAN representationfrom the manager process. For example, the user interface process cantransmit such a request in response to a SAN administrator command thatthe displayed topology representation be refreshed. The requester, inturn, forwards the request to a request handler, for example, in amark-up language format, such as XML, for further processing.

Further aspects of the invention provide a SAN as described above inwhich the interface element includes a manager daemon in communicationwith the request handler and the manager process, for example, via anobject request broker. The request handler transmits the request to themanager daemon which, in response, effects retrieval of the SANrepresentation from the manager process. The request handler cantransmit the request to the manager daemon in the same format as thatreceived from the requester. Alternatively, the request handler can mapthe request onto a generic format prior to its transmission to themanager daemon. The manager daemon can, moreover, include a controllerthat receives the request from the request handler, and communicateswith the manager process to retrieve the SAN representation.

In still further aspects, the invention provides a SAN as describedabove in which the user interface element includes a daemon process,herein referred to as user interface daemon, that receives the SANrepresentation retrieved by the manager daemon. The user interfacedaemon, in turn, effects display of the SAN representation on thegraphical output device.

Yet still further aspects of the invention provide a SAN as describedabove in which the manager daemon segregates a representation retrievedfrom the manager process, e.g., a SAN topology representations, onto aplurality of sub-representation, and transmits the sub-representationsto the user interface daemon.

Dynamically Extending File Systems

The invention provides, in other aspects, an improved SAN of type havingone or more digital data processors, e.g., the aforementioned hosts, andone or more storage devices. At least a selected one of the hostsincludes a file system that effects access by the host to assignedstorage devices. In response to a request by (or on behalf of) theselected host for extension of the file system, a manager assigns one ofmore further storage devices to that digital data processor. An agentassociated with the first digital data processor that responds to theassignment by extending the file system to include the assigned storagedevice.

Further aspects of the invention provide a SAN as described above inwhich the agent automatically extends the selected host file system byexecuting one or more steps including initializing the assigned storagedevice, creating a logical object to represent the assigned storagedevice, adding the logical object into a logical grouping of storagedevices that contain the file system to be extended, extending a volumesize of the host file system, and increasing a size of the host filesystem. In related aspects, the agent does not extend the file system ifany of these steps fail.

Related aspects of the invention provide a SAN as described above inwhich the agent executes on an AIX journal system. Here, the agentextends the selected host file system by converting the assigned storagedevice into one or more physical volumes, adding the one or morephysical volume into a volume group of the file system to be extended,and extends the logical volume of that file system onto the assignedstorage device.

Further related aspects invention provide a SAN as described above inwhich the agent executes on a UNIX or Veritas file system (both runningunder a Solaris operating system). Here, the agent extends the selectedhost file system by writing a new label to the assigned storage device,configuring the storage device for use with a volume manager byconverting the storage device into one or more VM disks, adding the oneor more VM disks to a disk group where a logical volume of the filesystem to be extended resides, and increasing a size of that file systemand the logical volume.

Dynamically Enabling SAN Manager

Further aspects of the invention provide a storage area network asdescribed above having one or more digital data processors, e.g., hosts,in communication with one or more storage devices, e.g., LUNs. At leasta selected one of the hosts has an operating system in which a storagedevice must be claimed (or mounted), e.g., via port driver and classdriver components as discussed earlier or via analogous functionality inother operating systems, before the storage device can be accessed byapplications programs executing on that host. The improvement ischaracterized by a selectively actuable filter, e.g., loaded with theselected host operating system, that—when actuated—intervenes to blockclaiming (or mounting) of one or more selected storage devices.

In further aspects, the invention provides a store that maintains a flagor other indicator, referred to elsewhere herein as an “enable” or“fully enabled” indicator. The aforementioned filter is responsive tothat indicator for selectively intervening to block claiming (ormounting) of storage devices. According to more particular aspects ofthe invention, the filter, when actuated, intervenes to block claiming(or mounting) of one or more selected storage devices by the selectedhost operating system class driver.

A graphical user interface element is provided, according to otheraspects of the invention, for setting the value of the enable indicator.The interface is responsive, for example, to operator/administratorinput (e.g., selection of buttons on a console) for determining thatsetting, e.g., enabled or disabled.

Still further aspects of the invention provide a SAN as described abovecomprising a manager digital data processor that is coupled to at leastthe selected host digital data processor. The manager responds tooperator/administrator input for transmitting software comprising afilter to the selected host.

According to related aspects of the invention, the manager digital dataprocessor provides for assignment of storage devices to the selected andother host digital data processors. Each of the storage devices,according to this aspect of the invention, is associated with one ormore logical unit numbers (LUNs). The manager transmits LUNs to thefilter to effect assignment of the associated storage device(s) to theselected host digital data processor. The filter, in turn, according tothis aspect of the invention, blocks claiming (or mounting) of SAN-class(e.g., fiber channel) storage devices other than those associated withthe LUNs transmitted to the filter.

Further aspects of the invention provide a SAN as described above inwhich the manager digital data processor includes a graphical userinterface that sets a value of a further indicator, referred toelsewhere herein as an “assignment enable” indicator, in the store topermit the operator/administrator to make assignments.

Launching Device Specific Applications

The invention provides, in still further aspects, a storage area network(SAN) of the type described above having a plurality of componentsincluding one or more digital data processors in communication with oneor more storage devices via a switching fabric. An interface process,e.g., resident on a manager digital data processor, permits theoperator/administrator to effect execution of at least a processresiding on the manager and at least one process residing on another SANcomponent. The latter process can be, for example, an applicationsprogram for management of the respective component.

In another aspect, the invention provides a SAN as described above inwhich the interface process effects a topological or other display ofone or more graphical objects, each representing one of the SANcomponents, on the graphical output device. The interface processresponds to operator/administrator selection of one of these graphicalobjects by depicting application processes, if any, residing on that SANcomponent. Execution of those processes can be effected by selection ofthose depicted processes.

The invention provides, in still further aspects, a SAN as describedabove in which the interface process responds to the selection of agraphical object representing a SAN component by accessing a store(e.g., maintained by the manager) identifying application processes, ifany, associated with each component. When the operator/administratorselects a component application for execution, the interface processretrieves requisite parameters, e.g., command parameters, from thedatabase, and utilizes the retrieved parameters to effect launching ofthe application on the corresponding component.

Interfacing with Multiple Host Platforms

The invention provides, in further aspects, a storage area network (SAN)of the type described above having a plurality of components includingdigital data processors, e.g., hosts, coupled to a plurality of storagedevice. A common, platform-independent process executes on the hosts,which can be of varied platform types, e.g., UniX™, Windows™, Solaris,and so forth. That process utilizes the command line interface of thehost operating system to invoke at least one platform-dependent processon the respective host.

According to related aspects of the invention, the platform-independentand platform-dependent processes comprise portions of the aforementionedagents. Here, the platform-independent processes represent thoseportions of the agents common to all platforms. The platform-dependentprocesses representing modules, such as drivers and scanners, specificto each platform.

In another aspect, the invention provides a SAN as described above inwhich the platform-independent processes transfer commands, data andother information to the respective platform-dependent processes viacommand line parameters of the respective hosts operating system. Inrelated aspects, the platform-dependent processes return data and otherinformation back to the respective platform-independent processes viathe Standard Output and/or Standard Error of the respective host commandline interface.

The invention provides, in still further aspects, a SAN as describedabove in which the platform-independent processes invoke the respectiveplatform-dependent processes to obtain information, e.g., “scans,”regarding the status of SAN components. The platform-independentprocesses capture that information (e.g., returned, via StandardOutput/Error of the respective host command line interface) fortransfer, e.g., to a manager digital data processor.

In still another aspect, the invention provides a SAN as described abovein which the manager digital data processor transmits queries to theplatform-independent processes, e.g., to effect their execute of scans.The platform-independent process responds to these queries by invokingtheir respective platform-dependent processes via the command lineinterface of the respective host, as described above, and returning thegathered information to the manager for further processing. The managerand the platform-independent process transmit information to one anotherformatted in a format such as XML and, further, utilize Object RequestBroker protocol for communication, e.g., via a local area network.

The invention provides, in still further aspects, a SAN as describedabove in which the manager includes a query engine for forwardingqueries to the platform-independent process, and further includes aregistry that contains information regarding the commonplatform-independent process and the digital processor hosts associatedtherewith. The information in the register provides identifiers, forexample, IP address, for communicating with the platform-independentprocesses via their respective hosts.

Yet, still further aspects of the invention provide methods of operatinga storage area network and components thereof paralleling the foregoing.

These and other aspects of the invention are evident in the drawings andin the description that follows.

BRIEF DESCRIPTION OF THE DRAWINGS

A more complete understanding of the invention may be attained byreference to the drawings, in which:

FIG. 1 depicts an exemplary storage area network (SAN) managementenvironment according to the invention;

FIG. 2 is another schematic view of a SAN management environmentaccording to the invention having a manager and two consoles that allowan operator to interact with the manager;

FIG. 3 schematically depicts functional components of an exemplarymanager in a SAN management environment of the invention and those of anagent residing on a host connected to the SAN;

FIG. 4 schematically depicts that a manager and an agent residing on ahost in a SAN according to the invention can run on different platformsand are in communication with one another;

FIG. 5 lists various services provided by an exemplary embodiment of amanager in a SAN in accord with the teachings of the invention;

FIG. 6 is a diagram illustrating a number of modules of a SAN manager ofthe invention and their architectural interconnectivity;

FIG. 7A schematically depicts the functionality provided by a policyengine of a SAN manager of the invention for extending the file systemof host connected to the SAN;

FIG. 7B schematically illustrates processing of events by the policyengine of FIG. 7A;

FIG. 8 is a diagram illustrating various modules for implementing LUNmanagement services in a SAN manager according to the teachings of theinvention;

FIG. 9 schematically illustrates that scanners running on hostsconnected to a SAN of the invention can utilize SCSI protocol to querystorage devices attached to the SAN;

FIG. 10 is a diagram illustrating a number of modules in a SAN of theinvention that implement LUN ID generation and LUN masking;

FIG. 11 is a diagram illustrating various modules of a SAN of theinvention and the interactions among them for implementing file systemextension services;

FIG. 12 illustrate three objects in a SAN management environment of theinvention including persistable data and related to one another via aninheritance tree;

FIG. 13 schematically depicts a method of the invention for mapping thepersistable data contained in the objects of FIG. 12 onto a relationaldatabase;

FIG. 14 is a flow chart that describes the method of FIG. 13 in moredetail;

FIG. 15 illustrates that a SAN manager of the invention can communicatewith a GUI server by utilizing an object request broker (ORB) over aTCP/IP connection;

FIG. 16 illustrates an exemplary display for displaying one or morestorage devices connected to the SAN of the invention and presentinginformation regarding selected attributes thereof;

FIG. 17 illustrates a display in accord with the teachings of theinvention displaying a containment tree hierarchy including a storagedevice, a LUN contained in the storage device, and selected propertiesof the LUN;

FIG. 18 illustrates an exemplary display presented by a GUI in a SAN ofthe invention displaying a list of hosts connected to the SAN and LUNsaccessible to a host selected from the list;

FIG. 19 illustrates the use of a GUI in a SAN of the invention forassigning a LUN to a host;

FIG. 20 illustrates use of a GUI in a SAN of the invention forunassigning and reassigning a LUN to a host,

FIG. 21 illustrates a display containing a list of accessible LUNs;

FIG. 22 depicts a dialogue box presented in the display of FIG. 21 forentering a numerical threshold for selective filtering of the LUNspresented in FIG. 21;

FIG. 23 depicts an example of a virtual SAN of the type that can bedetected by host adapters and disambiguated by a SAN manager accordingto the invention; and

FIG. 24 depicts a methodology according to the invention fordisambiguation of virtual SANs in a system according to the invention;

FIG. 25 depicts internal models maintained for purposes of SANmanagement in a system according to the invention;

FIG. 26 depicts a display presented utilizing the models depicted inFIG. 25;

FIG. 27 is a flow chart illustrating a method for responding to a fileextension request issued on behalf of a host by its associated agent;

FIGS. 28-32 depict renderings of a SAN topology in a system according tothe invention;

FIG. 33 depicts a hierarchical file extension policy system according tothe invention;

FIG. 34 depicts a graphical user interface display according to theinvention for presentation and management of the hierarchical fileextension policy of FIG. 28;

FIG. 35 depicts host file system extension in a system according to theinvention;

FIG. 36 depicts a storage driver architecture of a Windows™ NT orWindows™ 2000 host modified in accordance with the invention;

FIG. 37 depicts a mechanism for validating changes in the discoverengine of a system according to the invention;

FIG. 38 depicts functional components of an exemplary SAN daemon in asystem according to the invention;

FIG. 39 depicts a flow of information in a system according to theinvention in response to a administrator's request to refresh a topologydisplay;

FIG. 40 depicts a manner in which new topology data is transmitted froma SAN manager service to a user interface module in a system accordingto the invention;

FIG. 41 depicts a storage driver architecture of a Windows™ NT orWindows™ 2000 modified in accordance with the invention for kernel levelfiber channel detection;

FIG. 42 is a data flow diagram depicting execution of applicationsprocesses by the SAN manager console in a system according to theinvention; and

FIG. 43 depicts an architecture for host/agent communication andinterfacing in a system according to the invention.

DETAILED DESCRIPTION OF THE ILLUSTRATED EMBODIMENT

The illustrated embodiment provides inter alia for management of astorage area network (SAN) generally having a plurality of hosts thatare coupled with one or more storage devices via an interconnect fabricfor purposes of storing and retrieving information. The embodimentutilizes a manager and one or more agents, each of the latter beingassociated with at least one of the hosts and serving as “proxies” forthe manager, gathering status, attributes and other such informationregarding the hosts, the storage devices, and the interconnect fabric.The manager collates that information to discern the makeup, topologyand status of the SAN and its components, to apprise an administrator orother operator of the same (and of changes thereto), and to implement anadministrator-defined or other policy, e.g., by way of non-limitingexample, for assignment and unassignment of storage devices (e.g.,logical units) to the hosts.

FIG. 1 illustrates an exemplary storage network management environment10 according to the present invention in which a plurality of hosts 12a, 12 b, and 12 c, herein collectively referred to as hosts 12 oralternatively as managed hosts 12 communicate with a plurality ofstorage devices 14 a, 14 b, and 14 c, herein collectively referred to asstorage devices 14, via an interconnect fabric 16 having a plurality ofinterconnect elements, such as, a switch 16 a. Though hosts 12 aretypically web or file servers (for client computers which are not shownin the drawing), graphical workstations and so forth, they may compriseany digital data device that accesses and/or stores (collectively,“accesses”) information on the storage devices 14. The hosts, moreover,may run a variety of operating systems, by way of non-limiting example,Windows 2000, Windows NT, Solaris, and Linux. The hosts are constructedand operated in the conventional manner known in the art, as modified inaccord with the teachings herein (by way of non-limiting example,through incorporation of agent functionality as described in stillfurther detail below).

Storage devices 14 comprise apparatus for storing and/or retrievingdata. These typically comprise disk drives and arrays of the typeconventionally used in storage area networks, though any variety ofstorage devices may be used for this purpose. Illustrated devices 14 areconstructed and operated in the conventional manner as modified inaccord with the teachings herein.

Per convention, physical storage devices, e.g., a single disk drive oran array of disk drives, are logically divided or grouped in to logicalunits. This is typically accomplished via a controller (not shown)associated with each physical device. The controller is configured forthis purpose by an administrator, by factory default, or otherwise, in amanner conventional in the art and not further discussed herein. Onceconfigured, the controller responds to queries (e.g., directed to Page83h and/or Standard Page commands of the SCSI protocol) to identify thelogical units—typically by way of, for example, an identifier referredto as a logical unit number or LUN—and (to the extent relevant) thephysical device(s) on which they are contained.

The controller attends to data accesses directed to those logical unitsby retrieving and/or storing data at locations allocated to those unitswithin the physical devices—typically, without applications program,file system or operating system concern for the specifics (or even theexistence) of such allocations. In this light, unless otherwise evidentfrom context, the term “storage device” in relation to the illustratedembodiment refers to logical units, though in alternate embodiments itcan refer to physical devices.

In the illustrated embodiment, hosts 12 are coupled for communicationwith one another, as well as with a SAN manager 20, via a local areanetwork (LAN) 18 that utilizes the TCP/IP protocol. Other networksconfigurations, types and/or protocols may be used for this purpose,including, by way of non-limiting example, wide area networks,metropolitan area networks, regardless of media (wired, wireless,satellite or otherwise) and protocol.

Hosts 12 are coupled to storage devices 14 via interconnect 16 forpurposes of transferring data and commands therebetween. In theillustrated embodiment interconnect 16 comprises a fiber channel fabric,including fiber channel media, switches, and other componentrynecessary, typical and/or otherwise used to provide fiber channelconnectivity between the illustrated devices 12, 14. In alternativeembodiments, interconnect 16 utilizes other fabrics, networks or othercommunications media for transfers between hosts 12 and devices 14, withhigh-speed fabrics. Indeed, such transfers can be conducted over LAN 18,which also couples these devices.

SAN Manager and Agents

The illustrative SAN environment 10 includes a SAN manager 20 that caninclude one or more software modules that collectively manage SAN 10 bycollating that information to discern the makeup, topology and status ofthe SAN and its components, to apprise an administrator or otheroperator of the same (and of changes thereto), and to implement anadministrator-defined or other policy, e.g., by way of non-limitingexample, for assignment and unassignment of storage devices to thehosts. These software modules can reside on a common digital dataprocessor platform, or can alternatively be distributed over a number ofdifferent platforms. Those platforms may comprise any digital dataprocessor suitable for connectivity, e.g., with the hosts 12 (via theagents), as illustrated and otherwise for programming, configurationand/or operation in the role of a manager, as described below.

The illustrated manager 20 is connected to the hosts 12 and to thestorage devices 14 via the LAN 18. A connection (not illustrated) to thestorage devices can also be provided through the interconnect 16. Asdescribed in more detail below, the manager 20 communicates with aplurality of agents, each of which resides on one of the hosts 12, todiscover and gather information about the hosts, the interconnectfabric, and/or the storage devices. This can include inband discovery,i.e., utilization of the hosts (via the agents) to gather informationregarding inter alia the storage devices and interconnect fabric viaqueries through the respective host bus adapters (HBAs), or otherrespective interconnect 16 interfaces. It can also include outbanddiscovery, e.g., utilization of the agents to gather hoststatus/configuration information from the hosts themselves and/or togather storage device status/configuration information from the storagedevices themselves (e.g., using an SNMP protocol).

As shown in FIG. 2, a SAN management environment according to theinvention can include one or more consoles, such as consoles 22 a and 22b, to present/accept information to/from an operator, such as a SANadministrator. Of course, other human machine interface (HMI) devices ofthe variety known in the art may be used in addition or instead (e.g.,personal digital assistants, teletype terminals, touch pads, and soforth). To this end, SAN manager 20 can utilize a graphical userinterface (GUI) to drive information to the operator/administratorconsole and/or collect information therefrom. For example, the managerGUI can present a SAN topology on a console 22 and accept therefromoperator commands regarding host-to-storage device assignments orunassignment. Though reference is made throughout the specification tographical user interfaces and GUIs, those skilled in the art willappreciate that this embraces non-graphical (e.g., textual orvoice-synthesized) interfaces, where otherwise appropriate in view ofcontext.

As discussed above, the manager 20 communicates with a plurality ofagents, each of which is associated with one of the hosts 12, to gatherinformation regarding attributes of the SAN. The manager 20 collates andutilizes this information to manage the SAN (e.g., inter alia, todiscern the makeup, topology, and status of the SAN and its components,to apprise an administrator or other operator of the same and of changesthereto, and to implement an administrator-defined or other policy)

FIG. 3 schematically depicts functional components of the manager 20 andan agent 24 in the illustrated embodiment of the invention. Inparticular, the manager 20 includes a policy manager module 26, alogical unit number (LUN) manager module 28, a SAN topology managermodule 30, and a host manager module 32. In addition, the manager 20includes a module 34 for providing kernel services, and a graphical userinterface 36. The functionality of the modules can, of course, bedivided differently.

Turning now to FIG. 5, the services provided by the manager 20 cangenerally be grouped into Network management, LUN management, FileSystem monitoring and extension and general services. An exemplary listof some of these services follows:

-   -   SANDBParms. Utility Service used for accessing database tables.        Used by File Monitoring/Extension and LUN Management functions.    -   SANEvent. Utility Service that extends the TKS event service by        providing logging and SNMP/TEC event forwarding.    -   SANEventCorrelatorFactory. Converts SNMP traps, reported by the        Outband Change Agent, and HBA detected events, reported by the        Inband Change Agents, into TSNM events. Also publishes the        events.    -   SANHostMgr. Maintains the list of Managed Hosts by receiving        information from the SANAgentHostQuery services.    -   SANIndex. Utility Service used to maintain indices for accessing        information in database tables. This service is utilized in        conjunction with SANDBParms, and is used by File        Monitoring/Extension and LUN Management functions.    -   SANLicense. Maintains the current license state (try and buy,        fully licensed, not licensed)    -   SANLunMgr. Service that maintains the LUN assignments.    -   SANManagerService. Service that maintains the SAN topology and        attribute information.    -   SANQueryEngine. Generic service that maintains a list of queries        to be performed against a set of inband and outband agents and        performs the queries through the SANAgentScanners and Outband        Scanners.    -   SANStorAuto. Service that maintains the file monitoring and        extension policy. Receives events from the SANAgentFSMonitor        agent and performs the extension actions through the        SANAgentFSExtend.

The agents 24 provide serve as proxies for the manager, providingservices such as host file system monitoring, implementation of LUNassignment (e.g., via masking of non-assigned LUNs), and, as notedpreviously, discovery of host, storage device and/or interconnect fabriccomponents connected to the host on which the agent resides.

Each of the illustrated agents includes an agent framework and severalsubagents, though alternate divisions of functionality may be utilizedin other embodiments. A subagent represents a major service or function.Such a service or function can relate, for example, to host LUN maskingvia a host Device Driver, as discussed in more detail below.Alternatively, a subagent can scan a host attributes. In one embodimentof the invention, an object oriented programming language, such as,Java, is utilized for implementing the agent framework and subagents.

In the illustrated embodiment, the agents provide the services listedbelow. Greater or fewer services may be provided in agents ofalternative embodiments:

-   -   SANAgentDiskPool. Service that receives LUN assignments from the        SANLunMgr service and sends the requests to the SAN Disk Manager        Agent Interface.    -   SANAgentFSExtend. Service that receives extension requests from        the SanStorAuto service and extends the specified file system to        the specified physical volumes.    -   SANAgentFSMonifor. Service that monitors the File System        utilization and posts events if the monitoring policy is        exceeded.    -   SANAgentHostQuery. Service that sends host information to the        Host Manager Service. Maintains a heartbeat healthcheck with the        Host Manager Service.    -   SANAgentInbandChangeAgent. Service that receives events from the        Event Scanner and sends the information to the Event Correlator        Service. Maintains a heartbeat healthcheck with the Event        Correlator Service.    -   SANAgentScanner. Service that receives scan requests from the        Query Engine, sets up the environment for the scanner        executables, executes the scanners and returns the results.    -   SANAgentScheduler. Service used by the other agent services,        which maintains a schedule of activity requests and initiates        actions.    -   SdaDiskPool. Executable that performs LUN assignments at a        platform dependent level. Some platforms require at least one        filter device driver to mask unavailable LUNs at boot. Dependent        upon the specifics of the platform, the filter fails attempts by        the host file system to mount unassigned LUNs and, thereby,        prevents I/O with them.    -   Msdiscover. Executable that performs Management Server queries        to the switches in order to obtain the topology information.    -   Sandiscover. Executable that performs operating system queries        to the managed host and SCSI queries to the endpoint devices in        order to obtain attribute information.    -   Event & EventDaemon, Event Protocol Driver (AIX). Executable and        daemon that perform HBA queries in order to obtain event        information.

Referring back to FIG. 4, the manager 20 and each agent, such as theagent 24, can run on platforms having different operating systems, suchas, Windows NT, Solaris, etc. Further, the manager can communicate withan agent by utilizing object request broker-based (ORB-based) functioncalls with XML over a TCP/IP connection (though, an alternativeprotocol, such as HTTP can be used instead of the ORB calls). Moreover,a format other than XML can be used to transmit data and requestsbetween the manager and agents. An abbreviated example of XML containedin an agent's response to a request from the SAN manager is providedbelow:

<?xml version=“1.0”?> <DOCTYPE LegacyXml SYSTEM “legacy.dtd”><LegacyXml> <SystemXml> <UniqueIdXml>SystemXml:SystemXml:saigon.sanjose.ibm.com</UniqueIdXml> <ParameterXml><NameXml>Hostname</NameXml> <ValueXml>saigon.sanjose.ibm.com</ValueXml></ParameterXml> <ParameterXml> <NameXml>IP Address</NameXml><ValueXml>9.113.212.78</ValueXml> </ParameterXml>

FIG. 6 schematically illustrates the architecture of an exemplarymanager 20. The manager 20 includes a SAN Manager Service module 38 that(a) effects decisions (e.g., host-to-storage device assignment) onbehalf of the SAN in view of policy established by theoperator/administrator; (b) correlates the aforementioned inband andoutband data into a single composite view (e.g., component makeup andtopology) of the SAN, and (c) serves as a primary interface to theadministrator and to other applications.

LUN/SAN Topology Discovery

SAN Manager Service 38 assigns tasks to the illustrated engines, suchas, discover engine or engines 40, and reassigns the assigned tasks, ifneeded, based on changes, e.g., in the interconnect fabric components,services load and operator/administrator requests. Further, the SANManager Service 38 performs the aforementioned correlation function. Forexample, as discussed in more detail below, each discover engine 40 canprovide a portion of information regarding the topology of the SAN basedon its scope. Some of this information may overlap information providedby other discover engines or may complement it. For example, a host maycontain Fiber channel (FC) host bus adapters (HBA) and SSA HBA.Consequently, both the FC discover engine and the SSA discover enginecan detect and report information regarding this host. The ManagerService 38 collates such fragmentary pieces of information received fromthe various discover engines to obtain a composite image of the topologyof the SAN.

In addition to creating a composite image of the SAN, the SAN ManagerService 38 provides a high level interface with other applications foraccessing this composite image. Thus, the SAN Manager ‘owns’ the objectsin the composite image and provides references that other applicationscan utilize to access these objects, such as a reference to the fabriclevel objects which contain the component objects.

With continuing reference to FIG. 6, the SAN manager 20 includes one ormore fiber channel (FC) discover engines, such as the discover engine 40responsible for gathering topology and attribute information for the SANcomponents. The FC discover engine is subdivided into the followingfunctional areas: (1) Control: which coordinates the activity of theother areas; (2) Correlations: which pulls together the information fromvarious subprocesses and creates a composite image within the scope of asingle discover engine, and (c) Attributes: which processes theinformation from various attribute scanners, as described in more detailbelow (in addition to processing attribute information from upper levelprotocol commands utilized by the scanners, the attribute processor alsoidentifies some topology information based on inferences from thedevices available to the host systems); (4) Topology: which processesthe information from the Topology scanners (inband and outband).

The discover engine 40 receives and processes information gathered byone or more scanners, such as scanner 42, which are executables thatinteract with the hosts by performing system calls and IOCTL calls togather information. Since each scanner needs to directly interact withthe operating system of the host on which it resides, each scanner iscustom to the operating system of its host, and hence may not beportable. To restrict this non-portability, each scanner runs within anenvironment set up by a Scanner Subagent, such as exemplary subagent 44,and returns information to the subagent, which in turn forwards theinformation to other services.

The function of gathering information can be split among severalscanners, for example, an attribute scanner and a topology scanner. Anattribute scanner can execute queries received from an attributediscover processor 40 a of the discover engine 40. This can includeissuing Name Server Queries, walking loops and issuing upper levelprotocol queries. This can result in gathering host and deviceattributes as well as rudimentary topology information, e.g.,connectivity group level information. The attribute scanner also gathersfile system level information used by Storage Automation agents. Thetopology scanner executes queries received from a Topology ScannerProcessor 40 b. This includes issuing Management Server/Name Serverqueries and RNID queries.

The discover engine 40 has preferably a separate process for each typeof scanner. For example, the attribute scanner information is processedby the attribute processor 40 a that understands the format ofinformation received from the attribute scanner. Each discover engine isresponsible for presenting an image to the SAN Manager of the objectswithin its scope. Thus, the discover engine 40 receives events andperforms rediscovery and/or gathers attributes to update a SAN image.Since the discover engines are distributed, or at least have thecapability to be distributed, they need not automatically extend theirscopes. If a discover engine detects additional information beyond itsscope, it will report it to the SAN Manager process which determineswhether the discover engine should expand its scope or the new datashould be covered by another discover engine.

The SAN Manager 20 can also include a query engine 46 that is a helperservice which manages inband and outband scan requests. A client, suchas the discover engine 40, registers scan requests with the Query Engine46 which specifies target, scanner name and period of executioninformation. The query engine 46 coordinates running of the scanners andreturning information to the client. A portion of the query engine 46includes outband scanners which perform Simple Topology and Topologyscans.

A Simple Topology scanner gathers interconnect element infonration byutilizing FE MIB queries. This provides rudimentary switch informationthat can be combined with inband attribute scanner information toidentify which switches constitute the individual SANs. An outbandTopology scanner provides the same information as the inband Topologyscanner, with the exception of zone information, using the FC MGMT MIBand FE MIB. This scanner provides connection level information.

With continuing reference to FIG. 6, an Event Correlator 48 isresponsible for ensuring that Event SubAgents are running, creating richSAN management events from the raw event information provided by theEvent SubAgents or in SNMP traps and delivery of the SAN managementevent to interested services via an event service 50. The informationreceived from the Event Subagent or provided in the SNMP trap may beself-contained. However, in most cases, it will require processing toprovide a richer SAN management event that can be used by variousservices. As an example, an SNMP trap from an IP address will need to bemapped to an object in the SAN Manager's composite image and parsedbased on the MIB associated with that object type (e.g., once it hasbeen determined that a trap came from a Brocade switch, the Brocadeswitch MIB is utilized to determine the meaning of the trap).

SAN Manager Console

The exemplary manager 20 can also include a console, herein referred toas SAN manager console 52, herein referred to as Netview console 52. ANetview server 54, a Netview Daemon 56, a SAN manager Daemon 58, aNetview Requester 60, and a Console Request handler 62 allow the Netviewconsole 52 to interact with the SAN manager service 38.

The NetView server 54 and console 52 provide a topology console for SANManager. The primary interface for SAN Manager into the NetView Serveruses interfaces provided by a gtmd daemon. The server maintains apersistent store of the information that can be displayed by the NetViewconsole X and/or NetView Java Client 64.

Another interface between the SAN Management applications and theNetView server/console is the SNMP Trap interface. The Event Service canbe configured to send SNMP Traps to the NetView Server 54 which will bedisplayed on the NetView console 52.

The SAN Manager/NetView daemons 56/58 provide a bridge between SANManager services and NetView. The SAN Manager daemon 58 can communicatewith the SAN Manager service 38 by utilizing, for example, a Voyager ORBinterface. The NetView daemon 56 can communicate with NetView server 54by utilizing, the gtmd interfaces, NVOT, OVW and OVWDB. These are Cinterfaces requiring that the daemon also bridge from Java to C. Themapper portion of the daemon is responsible for mapping the entityobjects in the SAN Manager composite image into the NetView server.Although in some embodiments of the invention, the daemon does not havea persistent store of the information sent to the Netview, it can havesuch a store of information to optimize communication.

Communication from NetView to SAN Manager is initiated through theNetView Requester 60, which is an executable launched by the NetViewconsole 52. This executable receives callback requests from NetView andforwards these requests to the Console Request Handler 62.

Communication from NetView to SAN Manager can be performed by theConsole Request Handler Application. Although shown as a single block,the launched application performs several distinct functions and may beimplemented as separate applications. In some embodiments, all menuoperations, such as launching a management application, are performedvia the Console Request Handler 62. Additionally, any custom screens ordialogs, such as an administration console, can be part of the RequestHandler. The Console Request Handler 62 communicates with the SANManager and other services via the NetView daemon. Although the Netviewdaemon and the Console Request Handler are shown as separate blocks,they are preferably packaged as a single service.

Policy Engine and Action Automation

Illustrated SAN manager 20 detects whether a host 12 has exceeded autilization threshold of its file system (e.g., as defined by the hostoperating system, the SAN administrator, or otherwise), and dynamicallyassigns new LUNs to that host. This function of the SAN manager isherein referred to as storage automation service. As shown in FIGS. 7Aand 7B, the SAN manager can include a policy engine 38 a that isresponsible for carrying out policies relating to assignment of LUNs tohosts based on criteria set by the SAN administrator. In particular, thepolicy engine is responsible for deciding whether or not to assign LUNsto a host, which LUNs should be assigned and whether or not to issue analert.

With reference to FIG. 7B, more generally, the policy engine 38 aprocesses events. In particular, the policy engine maps (event, policy)pairs to an action generator 66 and maps actions received from theaction generator 66 to an action handler 68. An automation module 70provides the association between an event and a policy that applies tothat event. The event and policy objects are passed to the policy enginewhich consults its map to find any action generators that have beenregistered to handle the given (event, policy) pair.

The automation module 70 includes a set of classes (usually from asingle Java package) that provide functionality in the policy engineframework. The following classes are utilized:

-   -   IpolicyAutomationControl. Classes that implement this interface        initialize the automation modules by creating subscribers and        registering action generators and action handlers with the        policy engine. This interface can be implemented to create an        automation module.    -   IactionGenerator. Classes that implement this interface also        implement a generatActions method by convention. This method can        take two parameters. The first is an event class that implements        IpolicyEvent and the second is a policy class that implements        IPolicy. The generateActions method will evaluate the policy as        it applies to the event and will generate action objections as        appropriate. The generate action objects will be passed back to        the policy engine which will dispatch them to the appropriate        action handler.    -   IactionHandler. Classes that implement this interface also        implement a handle action method which takes as its sole        parameter a class which implements IpoliyAction. The action        handler will execute the appropriate measures for the given        action.    -   Ipolicy, IPolicyEvent, IpolicyAction. Classes that implement        these interfaces wrap information that the action generators and        action handlers need in order to perform their functions.

During startup, the policy engine 38a reads a list of classes from itspreferences. Each class implements IpolicyAutomationControl andrepresents an automation module. The policy engine will create aninstance of each class and call its initialize( ) method, which isresponsible for registering action generators and action handlers. Inaddition, the initialize( ) method can also create subscribers forcertain types of events from the event subsystem. These events can formpart of the input to the policy engine.

With reference to FIG. 7A, one type of event handled by the policyengine is indicative of the file system of a host having exceeded athreshold (FILESYSTEM_THRESHOLD_EXCEEDED). That is, the ratio of theused space to the total capacity of a file system or logical drive hasexceeded a defined threshold. A threshold subagent can raise such anevent when the threshold has been exceeded. Upon receipt of such anevent, an action handler, i.e., created by the policy engine based on(event, policy) pair, will determine whether or not to raise an alert.

This decision can be made as follows:

-   -   Step 1)        -   Determine values for Monitor, Extend, Maximum file system            size, Threshold, Alert Interval, and File System Extension            Criteria by querying the policy database. Start by filling            in any specific file system settings, then up through Hosts            and Host Groups. Anything not yet determined should be set            to the Enterprise defaults (values not explicitly set will            propagate up through the hierarchy).    -   Step 2)        -   If Monitor value is no, exit.    -   Step 3)        -   Compare observed utilization (used space/capacity) as            reported in the event to the defined threshold. If the            observed utilization is not greater than the defined            threshold, exit—no alert is raised and no LUN is assigned.            Update the agent.    -   Step 4)        -   If this is not extendable file system go to step 5, else go            to step 6.    -   Step 5)        -   Determine the amount of time, T, that has elapsed since an            alert was raised for this condition and compare that to the            alert interval stored in the policy database. If T is less            than the alert interval, no alert is raised, otherwise            indicate an alert should be raised and record the time it            was done. Then exit.    -   Step 6)        -   If this file system has reached its maximum file system size            send an alert, else go to step 7.    -   Step 7)        -   Attempt to extend the file system, as follows:            -   (i) Obtain the list of available LUNs matching the LUN                type defined for the host from the SAN Disk Manager            -   (ii) If the list is empty, exit—no LUN is assigned,                raise an alert and log that there are no LUNs of this                type available.            -   (iii) Sort the list by size in descending order.            -   (iv) Traverse the list until a LUN is found that is less                than or equal to File System Extension upper bound but                greater than or equal to File System Extension lower                bound. If one is found, the selection process ends, and                that LUN is used for assignment.            -   (v) If a LUN was not selected in step 7 (iv), and there                are LUNs in the list that are smaller than File System                Extension lower bound, select multiple LUNs from the                list until the total capacity of the selected LUNs                exceeds File System Extension lower bound, but is less                than File System Extension upper bound if no combination                of LUNs can be built to satisfy the LUN Assignment                Criteria (File System Extension lower bound<combined                capacity of selected LUNs<File System Extension upper                bound), the selection process ends, and no LUNs are                assigned, and an alert is raised and logged.    -   Step 8)        -   Returns one or more LUNs to be assigned to the Storage            Automation Service.            LUN Management

The SAN manager 20, as noted above, provides LUN management for the SAN10. This includes disambiguating logical unit identification informationsupplied by the agents (e.g., from inband discovery), assigning LUNs tohosts in manner consistent with policy defined by an administrator orotherwise (and effecting those assignments via the agents), deallocatingLUNs, e.g., at operator/administrator request.

FIG. 8 illustrates various modules in the SAN manager that implement LUNmanagement services. A SAN host manager module (SANHostMgr) 68 maintainsa list of managed hosts, for example, by IP address, in a Host Table.This list enumerates machines configured as managed hosts. A SAN agenthost query module (SANAgentHostQuery) 70 provides host identificationinformation at startup and on demand to the SANHostMgr 68. For example,at start of service, it sends Agent Registration Event to the SANHostMgr68. Further, it can be called by services, such as, SANHostMgr 68, SANLUN Manager module (SANLunMgr) 72, or other services, to provide hostinformation. The SAN LUN manager module (SANLunMgr) 72 maintains a listof Host-LUN assignments, for example, by IP address or LUN ID, is anAssignment Table. This list is typically frequently updated by functioncalls from other services, such as, GUI or SAN Automation. It is alsooccasionally updated according to conditions reported by a SAN AgentDisk Pool service module 74.

The SANLunMgr 72 also monitors and reports the existence of SAN-attachedhosts that do not have LUN masking enabled. These hosts, herein referredto as called “Rogue Hosts”, can potentially compromise the SAN dataintegrity and security. Rogue hosts that are known to the SANHostMgr Xare called “LUN Manager Rogue Hosts.” Those known only to the SANmanager are called “SAN Manager Rogue Hosts.” SANLunMgr can enumerateLUN Manager Rogue hosts, and can provide an “existence” notification forthe Rogue hosts. A list of the LUN Manager Rogue hosts is kept in aRogue Host Table. The SANLunMgr 72 can also include a property changelistener that adjusts SANAgentDisk polling interval, and enables RogueHost handling only when SANAgentDiskPool agents are “deployed”. Itfurther queries SANAgentDiskPool for agent status, updates Rogue HostTable, queries SANManager for SAN Manager Host status, and notifiesother services (GUI) of change in SAN Manager Rogue Host status.

With continuing reference to FIG. 8, the SANAgentDiskPool 74 providesbasic host information to the SANLunMgr 72, services request to assignand un-assign LUNs, and refreshes LUN assignments according to thecurrent status recorded in the Assignment Table.

-   -   LUN IDs

In the illustrated embodiment, scanners running on the hosts query thestorage devices to gather raw information regarding attributes, e.g.,logical units, of the storage devices. The scanners transmit this rawinformation via the agents to the SAN manager, which utilizes thisinformation along with an algorithm and support information, as well asprevious scan information, to assign identifiers to the storage logicalunits, as described in more detail below. The SAN manager passes the LUNID information as well as an algorithm identifier, for example, througha Disk Manager, to filter drivers associated with the hosts. Thesefilter drivers intervene whenever the host file system or operatingsystem attempt to mount a storage device on the interconnect fabric,failing all attempts except those for assigned LUNs.

With reference to FIGS. 9 and 10, in this illustrated embodiment, thescanners running on exemplary managed hosts 12 a-12 c, such as anAttribute Scanner 42 a, utilize Page 83 h and/or Standard Page commandsof SCSI protocol to query exemplary storage devices 14 a, 14 b, 14 c,and 14 d regarding attributes of storage logical units present on thesedevices. Vendor and product identification data can be separated intothe following distinct fields:

-   -   (Unique ID) Unique ID generated as “LunXml:”+node WWN+“LUN”+lun#    -   (Vendor ID) Vendor ID from Standard Inquiry fields 8-15    -   (Product ID) Product ID from Standard Inquiry fields 16-31    -   (Revision) Revision level from Standard Inquiry fields 32-35    -   (rawSTDdata) STD data is the entire set of Standard Inquiry data        returned by the device.    -   (raw83data) 83 h data is the entire set of Inquiry VPD page 83 h        returned by the device. If the device does not support page 83        h, then the raw83data stanza will not be included in the data.

While those skilled in the art will appreciate that other combinationsof fields may be used, the UniqueID, VendorID, Product ID, Revision,rawSTDdata and raw83data are returned in the manager portion of thescanner results. The rawSTDdata and raw83data are also returned in theStorage Automation portion of the scanner results. The unique ID fieldis utilized for relative identification within the XML. Identifying thelogical unit based on reporting node WWN may result in identification ofthe same LUN in the XML data multiple times with distinct unique IDs.These LUNs will be resolved into a single entity at the manager levelapplying the LUN ID algorithms, described below.

The Attribute Scanner 42 a reports the raw device Page 83 h and StandardPage data to a Storage Automation Policy Agent 74 that calls the SANManager 20 to convert this raw data into LUN IDs.

The SAN manager generates LUN IDs, as discussed in more detail below,from the raw data received from the policy Agent. If the SAN managerfails to generate distinguishable LUN IDs, it flags the device and theLUN associated therewith, and publishes an event. The SAN managerfurther sends the generated LUN IDs to a Disk Manager 76 and the SANManager GUI 20 a.

The general format of a LUN ID formed by the SAN manager is acombination of an algorithm identifier, a vendor ID, a product ID, andan ID number that can be, for example, the serial number of a device.Although the world wide ID returned in the page 83 h information isgenerally sufficient to guarantee uniqueness, the algorithm identifieris included to ensure uniqueness across algorithms. Further, the vendorID and the product ID are employed to ensure uniqueness across vendorand product families.

Although a LUN ID is composed of various fields, it is not typicallyintended to be parsed for accessing its individual fields. In someembodiments, the LUN IDs will be 113 characters in length whenrepresented in percent (%) notation and will be padded with trailingspaces, if necessary. Though alternate embodiments may use differentfield and overall lengths, in the illustrated embodiment, the 113character limit ensures that the LUN IDs can be persisted as uniqueidentifiers within the SAN manager persistence service. In theillustrated embodiment described herein, the lengths of various portionsof a LUN ID is as follows

algorithm identifier 2 characters; vendor ID 8 characters; product ID 16characters; Id number 29-87 characters depending on % conversion usage.

-   -   Various exemplary algorithms utilized by the SAN manager to form        unique LUN are described below. Each is based on different data        obtained from Page 83 h or from the Standard Inquiry page of the        storage devices:    -   LUN Generation Using Page 83 h Data—Type 1 (0)

Page 83 h may contain one or more one or more identifiers. The processfor all of the Page 83 h queries is to parse the page and step throughthe list of Identification Descriptors until a match is encountered. Thevalidity of generating a LUN ID with this algorithm is verified bycomparing the following fields:

Field Value Byte 0 (reserved/code set) of the Identification ‘01’ or‘02’ Descriptor from page 83h Byte 1 (reserved/association/ID type) ofthe ‘01’ Identification Descriptor from page 83h

The LUN ID is generated by concatenating the following fields:

Field Value Algorithm ‘00’ Vendor ID Bytes 8-15 of Standard Inquiry DataProduct ID Bytes 16-31 of Standard Inquiry Data ID Bytes 4-n of theIdentification Descriptor from page 83h

-   -   LUN Generation Using Page 83 h Data—Type 2 (1)

The validity of generating a LUN ID with this algorithm is verified bycomparing the following fields:

Field Value Byte 0 of the Identification Descriptor ‘01’ or ‘02’ frompage 83h Byte 1 of the Identification Descriptor ‘02’ from page 83h

The LUN ID is generated by concatenating the following fields:

Field Value Algorithm ‘01’ Vendor ID Bytes 8-15 of Standard Inquiry DataProduct ID Bytes 16-31 of Standard Inquiry Data ID Bytes 4-n of theIdentification Descriptor from page 83h

-   -   LUN Generation Using Page 83 h Data—Type 3 (2)

The validity of generating a LUN ID with this algorithm is verified bycomparing the following fields:

Field Value Byte 0 of the Identification Descriptor ‘01’ or ‘02’ frompage 83h Byte 1 of the Identification Descriptor ‘03’ from page 83h

The LUN ID is generated by concatenating the following fields:

Field Value Algorithm ‘02’ Vendor ID Bytes 8-15 of Standard Inquiry DataProduct ID Bytes 16-31 of Standard Inquiry Data ID Bytes 4-n of theIdentification Descriptor from page 83h

-   -   LUN Generation Using Standard Inquiry Data (3)

The Validity of generating a LUN ID with this algorithm is verified bycomparing the following fields:

Field Value Bytes 36-45 Non zero values

The LUN ID is generated by concatenating the following fields:

Field Value Algorithm ‘03’ Vendor ID Bytes 8-15 of Standard Inquiry DataProduct ID Bytes 16-31 of Standard Inquiry Data ID Bytes 36-45 ofStandard Inquiry Data

The following is an example of a LUN ID generated by utilizing theStandard Inquiry data algorithm. Note that the data is shown in %notation: “03EMC SYMMETRIX 123456789”

-   -   LUN Generation Using Standard Inquiry Data—Extended Fields(4)

The validity of generating a LUN ID with this algorithm is verified bycomparing the following fields:

Field Value Bytes 36-55 Non zero values

The LUN ID is generated by concatenating the following fields:

Field Value Algorithm ‘04’ Vendor ID Bytes 8-15 of Standard Inquiry DataProduct ID Bytes 16-31 of Standard Inquiry Data ID Bytes 36-55 ofStandard Inquiry Data

Assigned LUN IDs are communicated to agents by the SAN manager 20 foruse in effecting LUN assignments, or “LUN masking,” on the respectivehosts. Specifically, the Disk Manager 76 updates a filter driver 79residing within a respective agent on each host with a list of assignedLUN IDs. When an attempt is made to mount a storage device otherwisevisible to the host, the filter driver 79 intervenes, applying the LUNID algorithm indicated in the manager-supplied IDs (e.g., from among thealgorithms described above) and failing for any device for which thereis not a match (and succeeding for any device for which there is amatch). In this way the filter driver “masks” LUNs, i.e., prevents thehost from accessing unassigned LUNs.

Another service provided by the SAN manager of the invention relates toFile System monitoring and extension. With reference to FIG. 11, A SANStorage Automation Service module 78 (SANStorAuto) functions as acontroller for policy information. In that capacity, it has three mainfunctions, namely, (1) maintenance of policies, (2) notification to FileSystem monitor module 80 (FSMonitor) of policy changes, and (3)processing events when policies are exceeded.

The SANStorAuto 78 maintains a set of database tables that indicate thecurrent policy definitions for each managed host. This policy includes amonitor flag, extend flag, maximum file system size, threshold, alertinterval, LUN type, lower bound and upper bound.

A SAN Administrator Client module 82 (SANAdminClient) can request policyinformation from SANStorAuto 78 to be displayed on a graphical userinterface console (not shown) and can send policy updates back to besaved in a database. When policy updates are made via the GUI, they arepushed down to the corresponding file system monitors.

When a file system monitor detects that a policy has been exceeded, anevent is sent to the SANStorAuto 78. The policy engine 38 a receivesthis event and determines if the file system can and/or should beextended, or if only notification is required. If the file system shouldbe extended, then the policy engine determines what LUN to use andrequests that the LUN be assigned to by the SANLunMgr 72. Once the LUNis assigned, a File System Extension service (SANAgenFSExtend) 84 iscalled to perform the extension by utilizing the host local operatingsystem to extend the file system onto the newly assigned LUN.

A SANAgentScheduler 86 is a utility function that lets other functionsschedule actions to be started some time in the future. It maintains alist of activity requests and the action to be performed when therequest time is reached.

At startup, a SANDBParms utility service 88 retrieves databaseparameters from the TMD and stores them as an object. Other services canthen access the object to create database connections. There is also ahelper functions for creating a pool of database connections that can bereused.

A SANIndex 90 is a utility service that maintains a database table thatother services can create, named sequences in. It will return the nextindex value given a sequence name.

A SANEvent is a utility service that can perform 3 functions, namely,(1) logs all SANEvents, (2) forwards events to SNMP and TEC, and (3)maintains the location of the SNMP and TEC event consoles.

SANEvent service subscribes to all SANEvents. All other events publishedby TSNM extend SANEvent. When a SANEvent is received, it is logged inthe TKS message log. SANEvent service will look inside each SANEvent itreceives and if there is SNMP and or TEC information in the SANEvent,the events will be forwarded to the SNMP or TEC consoles.

Another function of SANEventService is to maintain the location of theSNMP and TEC consoles. The SANCommonAdminClient requests the locationinformation to be displayed on the Console and sends updates back.

Peer Classes and Component Data Persistence

The SAN manager of the invention preferably utilizes an Object Oriented(OO) data model, but employs a relational data model for storingpersistent data. The SAN manager employs peer classes, as discussed inmore detail below, to map the OO model onto a relational model. The useof peer classes advantageously isolates the business logic from therelational database logic while allowing the use of inheritance in thebusiness and database logic. This has the added advantage that differentthird party products for mapping an OO model to a relational model canbe utilized without impacting the business logic.

With reference to FIGS. 12 and 13, the use of peer classes in accordwith the teachings of the invention for mapping an OO model to arelational model can be better understood by considering an example.FIG. 12 illustrates a simple object model 90 including an inheritancetree with two abstract classes 92 and 94 and a concrete class 96. Eachclass 92-96 includes persistable data (a1, a2, and a3).

In the method of the invention for mapping the persistable datacontained in the classes 92-96 onto a relational database, for eachclass 92-96, a corresponding peer class (peer classes 92 a, 94 a, 96 a)is formed, and the persistable data in each of the classes 92-96 ispassed to its corresponding peer class. The peer classes 92 a-96 a inturn map the persistable data onto a relational database to be stored inas persistent data.

The peer classes 92 a-96 a form an inheritance hierarchy. There is onlyone reference between the classes 92-96 and their corresponding peerclasses 92 a-96 a, namely the pointer iPeer in the root object (Abstract1). The iPeer value is overwritten as classes are constructed down theinheritance tree (from top to bottom). Attributes stored in intermediateclasses are still accessible from all the left hand column objects,since the (bottom right hand) object pointed to by the iPeer willinherit the attributes of all the classes above it in the right handcolumn. This advantageously saves a great deal of complexity in the codeby obviating the need for every class on the left to have its ownpointer to a corresponding class on the right. When an object on theright is retrieved from a database, code in “PersistablePeer1” cansimply call “createOrigObject( )”, which will automatically call“createOrigObject” in the bottom right hand class, to automaticallyconstruct the correct object (& tree) in the left-hand column, matchingthe object retrieved.

Further understanding of the use of peer classes in the SAN managementsystem of the invention can be obtained by reference to FIGURE X.

Administrator Notification

The SAN management system of the invention can notify the SANoperator/administrator of the occurrence of a condition, e.g., theutilization of a file system exceeding a threshold (e.g., defined by thehost file system, the SAN administrator or otherwise). The SAN managernotifies the administrator of the first occurrence of the condition, butallows the administrator to define a time interval, herein referred toas alert interval, before the administrator is notified of subsequentoccurrences of the same condition.

For example, the SAN management system may be monitoring a conditionevery 15 minutes, but the administrator may require a notification everytwo days. When the system detects an occurrence of the condition, itwill determine whether it is the first time that the condition has beendetected by consulting a database for date and time of a previousnotification, if any, of the occurrence of the same condition. If thereis no saved date and time corresponding to a previous notification, themanager transmits a notification to the SAN administrator, and saves thedate and time of the transmittal. Alternatively, if the databasecontains a date and time corresponding to a previous notification of thesame condition, the manager determines whether the time elapsed sincethe previous notification exceeds the alert interval. If the elapsedtime exceeds the alter interval, a notification is transmitted.Otherwise, no notification is transmitted.

The use of an alert interval by the SAN management system of theinvention allows an administrator to control the frequency ofnotifications sent by the manager thereto regarding the occurrences ofvarious conditions. Further, the SAN management system preferablyprovides a graphical user interface to the administrator for efficientand convenient setting of the alert interval.

Graphical User Interface

The SAN manager console employs a variety of graphical user interfaces(GUI) for displaying various components of the SAN, such as, the hosts,the storage devices, and their selected attributes to the SANoperator/administrator. As shown in FIG. 15, a GUI server 98communicates with the SAN Manager by utilizing, for example, an ObjectRequest Broker (ORB) over a TCP/IP connection. The Manager can createobjects (services) and “bind” them to the ORB directory service. GUI can“look up” an object by name in the directory service and get the object“proxy”. GUI can invoke object methods to obtain information or toperform operations.

As an example of a GUI utilized by the SAN manager of the invention,FIG. 16 illustrates a display 100 in a portion of which a storagedevice, and its selected attributes, such as, its serial number, itsproduct Id, are shown. The display is presented on consoles or othergraphical HMI devices of the type discussed above in connection withFIG. 2. The Storage device is identified in a first panel, and itsselected attributes are displayed in a second panel vertically separatedfrom the first panel. In this illustrated embodiment, the selection ofthe storage device in the first panel, for example, by clicking on theicon representing the storage device, results in the display of itsproperties in the second panel.

As another example of a GUI utilized by the SAN manager of theinvention, FIG. 17 illustrates a display 102 illustrating a panel 104that includes a containment tree hierarchy having a storage device atthe top, and a LUN contained in the storage device at a level beneaththe storage device. This provides a convenient visual representation ofthe LUNs within a storage device. The selection of an object in thepanel 104 results in the display of selected attributes of the selectedobject. For example, in this exemplary illustration, the selection ofthe displayed LUN results in the display of selected properties of theLUN in another panel 106 vertically separated from the panel 104. Theseselected LUN attributes include, among other items, the names of thehosts to which the LUN is assigned, the IP addresses and the operatingsystems of these hosts. In a preferred embodiment, the LUN attributesare displayed in the panel 106 only if the icon representing that LUN isselected in the panel 104. This can minimize the retrieval ofinformation regarding the LUN attributes from a database, which can be aremote database.

Those skilled in the art will appreciate that the formats for thedisplay of the various hosts and storage devices, and the associatedLUNs and their attributes are not limited to those presented above. Forexample, horizontally separated panels rather than vertically separatedpanel can be utilized to present a LUN and its associated attributes.Further, the selection of the attributes of the storage devices and theLUNs to be displayed to a operator/administrator can be different or cancomplement those described above.

-   -   Use of GUI for LUN Assignment, Unassignment and other Functions

In one aspect, the invention provides a graphical user interface (GUI)in a SAN management environment of the type described above that allowsthe operator/administrator, to efficiently assign (and unassign) one ormore LUNs to each host connected to the SAN. More particularly, theselection of a host and a LUN accessible to that host from a displaycontaining objects representing the host and the LUN results in enablingan Assign function, or an Un-assign function and/or a Re-assignfunction. The administrator can utilize the enabled functions to assign,un-assign and/or re-assign the LUN to the host.

FIG. 18 further illustrates this aspect of the invention by presenting aGUI 108 that includes a panel 110 in which a plurality of icons 112 a,112 b, 112 c, and 112 d represent the various managed hosts connected tothe SAN. The selection of an icon representing a host, e.g., archi,results in the display of the LUNs accessible to that host in a separatepanel 114, which is vertically disposed relative to the panel 110. Inthis illustrated embodiment, the information regarding the LUNsaccessible to the host archi is presented in a table format whichincludes information regarding the storage capacity of each LUN, itsvendor, product id, and revision. In addition, for a selected number ofLUNs, a status parameter indicates whether the LUNs are assigned or notassigned to the host, in this case archi.

FIG. 19 illustrates that the selection of one of the displayed LUNs,namely, the LUN having a unit number 40BFCA34, results in activation ofa an Assign LUN button 116 indicating that the Assign function has beenenabled. Hence, the selection of the Assign button 116 results ineffecting the assignment of this LUN to the host “archi.”

Alternatively, as shown in FIG. 20, the selection of the displayed LUNhaving a unit number AC66203, which has been previously assigned to thehost archi, results in activation of the Unassign LUN button 118 andReassign LUN button 120. The operator/administrator can select theactivated Unassign function to un-assign this LUN from the host archi.Alternatively, the operator/administrator can select the activatedRe-assign function to re-assign the selected LUN to the host archi.

-   -   GUI Filtering

The system SAN management system of the invention allows filtering theLUNs displayed in a graphical user interface by utilizing one or moreselected criteria. For example, in one embodiment, a set of displayedLUNs can be filtered to provide a display of those LUNs whose capacityexceeds an operator/administrator-defined threshold.

For example, FIG. 21 illustrates a table 122 of accessible LUNs. FIG. 22illustrates the accessible LUNs of FIG. 21, and it further illustratesan object 124 in the form of a pop-up window that allows theoperator/administrator, to enter a criterion for filtering the LUNs. Inthis illustrated embodiment, the operator/administrator can filter theLUNs based on whether a LUN capacity is greater than or less than aoperator/administrator-defined threshold. In this case, theoperator/administrator has chosen a value of 5000 kilobytes as capacitythreshold. The application of this threshold value to the accessibleLUNs in table 122 results in displaying only those LUNs whose capacitiesexceed this threshold.

Event Processing

Referring to the discussion in connection with FIG. 6, the SAN manager20 includes one or more fiber channel (FC) discover engines (or othersuch engines corresponding to the interconnect 16 and/or host-to-storagedevice communication protocol), such as the discover engine 40responsible for gathering topology and attribute information for the SANcomponents. Each discover engine 40 receives and processes informationgathered by one or more scanners, such as scanner 42, which areexecutables that interact with the hosts 12 by performing system callsand IOCTL calls to gather information. The SAN Manager 20 includes aquery engine 46 that is a helper service which manages inband andoutband scan requests. The discover engine 40, registers scan requestswith the Query Engine 46 which specifies target, scanner name and periodof execution information. The query engine 46 coordinates running of thescanners and returning information to the client. A portion of the queryengine 46 includes outband scanners which perform Simple Topology andTopology scans.

The function of gathering information is split among several scanners,e.g., an attribute scanner, topology scanner, a simple topology scannerand an outband topology scanner. Together, these collect inband andoutband information including host and device interconnectivity (e.g.,which storage devices are accessible to which hosts and host file systemutilization), host attributes (e.g., file system information, includingidentities of mounted storage devices), storage device attributes (e.g.,storage capacities), and interconnect element information. The scannerscan perform information gathering, or discovery, on boot-up of the hostsand periodically thereafter, e.g., at a preset interval set by thesystem administrator or by default. They can also perform discovery onoccurrence of events detected by their respective hosts, e.g., resultingfrom insertion or removal of a storage device, or at the request of theSAN manager 20. In the illustrated embodiment, complete scans aretransmitted by the scanners 42 to the discover engine 40. Thatinformation is transmitted in XML format over via a TCP/IP connection,e.g., via network connection 18. In alternate embodiments,communications can be in other formats and/or via alternate network orother communication connections.

Discover engine 40 maintains a one level-deep history of scans from eachscanner 42. It discerns changes in the SAN by comparing each scan as itis received from each respective scanner with a prior scan from thatsame scanner. If the engine 40 identifies differences affecting thetopology of the SAN, it generates and forwards to the SAN manager 20service module 38 notifications reflecting those changes. These caninclude, for example, notifications indicating addition of a new host orstorage device, modification of attributes of a host or storage device,removal of a device, or change or removal of a relationship between ahost and a storage device. In one embodiment of the invention, thediscover engine 40 generates a single notification for each changeidentified when comparing a newly received scan with a prior scan fromthe same scanner 42. In alternate embodiments, it can forward multiplenotifications and/or data for each identified change.

In the illustrated embodiment, when all the notifications resulting fromcomparison of a newly received scan with a prior scan from the samescanner 42 are completed (i.e., transmitted to the service module 38),the discover engine generates a further notification. This “scancomplete” notification (or other termination notification) signals theservice module 38 that the prior notifications just generated pertain toa single scan. In alternate embodiments, e.g., where the discover enginegenerates multiple notification and/or data for each identified change,the engine 40 can generate a “scan complete” or another such terminationmessage following generation of those multiple notifications/data.

Due to the nature of the SAN 10, scans are typically generated by thescanners 42 asynchronously with respect to one another. Moreover, scansconducted following processing by the service module 38 of the topologychanges identified by the discover engine 40 can result in generation offurther notification. To avoid an excessive backlog of notifications,the module 38 queues the received notifications in groups. It processesthe groups only after receiving the scan complete or other terminationnotification for that group. Moreover, it processes each group ofnotifications one at a time and atomically. To accomplish this,processing is effected through execution of tasks created for handlingeach respective group of notification and placed on a separate queue bythe service manager 38.

The SAN service module 38 places on a first queue Q1 notifications N1,N2, N3, . . . received from the discover engine during processing of anewly received scan. Upon receiving a scan complete notification forthat scan, the service manager creates a task S1 for (i) processing thenotifications N1, N2, N3, . . . , and (ii) updating the manager 20representation of the SAN topology. It queues that task to a secondqueue Q2 and, if no other tasks are ahead on it, invokes task S1 toeffect such processing and updating.

In the meanwhile, SAN service module 38 places on a first queue Q1further notifications N1′, N2′, N3′, . . . received from the discoverengine during processing of a different newly received scan. Uponreceiving a scan complete notification for that scan, the servicemanager creates a task S2 for processing those notifications andupdating the manager's SAN topology representation. It queues that taskto a second queue Q2 and processes it in order. In the illustratedembodiment, the second queue is a first-in-first-out queue. Thus, taskobjects S1, S2 are executed in FIFO manner. In alternative embodiments,the second queue may be implemented as a priority queue or otherwise.

Illustrated tasks S1, S2 are represented by respective object-orientedprogramming (OOP) objects. Each includes method and data members thatprocess the corresponding queued notifications N1, N2, N3, . . . , N1′,N2′, N3′, . . . in FIFO manner. Thus, once an element on the secondqueue is invoked, the notifications associated therewith on the firstqueue are processed one at a time by invoking actions, e.g., in themanner discussed above in regard to the policy engine and actionautomation engine, that, inter alia, update the SAN topology maintainedby the manager 20 or otherwise accommodate the indicated change.

Though illustrated notifications N1, N2, N3, . . . are processed on aFIFO basis, in alternative embodiments, the notifications of eachrespective group may be processed based on priority or otherwise withrespect to other notifications of the same group. Moreover, though OOPobjects are utilized in the illustrated embodiment, those skilled in theart will appreciate that other constructs may be utilized instead and/orin addition to represent the tasks.

In addition to tasks S1, S2, . . . , that are generated by the service38 as a result of notifications from the discover engine, further tasks(not shown) may be queued to the task queue Q2 representingoperator/administrator requests. These include, for example, requests tochange the name of a storage device (e.g., LUN), and so forth. Suchtasks are queued in FIFO, priority, or other order, for execution.Unlike the other tasks S1, S2, . . . , theoperator/administrator-effected tasks do not involve processing ofnotifications in the first queue.

This dual approach to handling changes in the SAN, namely, placingasynchronously received scan complete events on a first queue andplacing tasks for processing thereof on a second queue allowsmaintaining a stable representation of various attributes of the SAN,and further ensures that the task notification queues are kept at areasonable size.

Conflict Resolution in Event Processing

Continuing with the above discussion, a task object, e.g., S1, mayretrieve further data from the discover engine during processing of itscorresponding notifications, N1, N2, N3, . . . For example, anotification N1 can indicate that a storage device has been added. Toupdate the topology representation maintained by the manager 20, themanager service 38 retrieves the identity of that storage device fromthe corresponding scan representation maintained by the discover engine.That information, once obtained, is used by the service 38 to update thetopology representation.

In the event the discover engine representation has been modified sincethe notification N1 was issued, for example, as a result of a laterreceived scan indicating that the newly added storage device wassubsequently removed, the manager service 38 detects a logical conflict(e.g., between the event notification N1 indicating that the device hasbeen added and the discover engine database indicating that no suchdevice exists). In such instances, the service 38 employs a conflictresolution mechanism and takes action based on the class of conflict. Inthe illustrated embodiment, classes of conflicts include modificationsof the discover engine representation, e.g., as a result of newlyreceived scans, or corruption of the service manager representation,e.g., as a result of improper action taken on previous events, missedevents, database save failures, etc.

Scenarios that indicate corruption and those that indicate a probablechange to the underlying representation are identified and documentedbelow. When corruption is absent, no action may be required on the partof the manager service whose goal it is to keep its representation “insync.” However, as a precautionary measure, the manager service canrecord that an event was received that did not result in an update, andthen verify that the expected subsequent event did indeed followsometime later.

-   -   Handling Events that Appear Inconsistent with Current SAN        Manager Services or Discover Engine Database Contents    -   New Device Event Received    -   Problem Scenario #1) Device is not in discover engine database.    -   Probable Cause: The discover engine removed the object from its        database prior to when the SAN manager 20 service started        processing the new device event. A subsequent “device-missing        event” should be forthcoming.    -   Action: Discard the new device event. Alternatively, see if it        is present in the SAN manager 20 service database, and if so,        change the state to “suspect”.    -   Problem Scenario #2) Device is already listed in the SAN manager        20 system database and its state is not “missing”.    -   Probable Cause: The databases are out of sync.—missed a        device-missing event.    -   Action: Perform database recovery actions. (See list of possible        actions below.)    -   New Relationship Event Received    -   Problem Scenario #1) Relationship Object is not in discover        engine database.    -   Probable Cause: The discover engine subsequent to transmitting a        notification to the SAN manager 20 service removed the object        from its database prior to the SAN manager 20 service processing        of the new relationship event. A subsequent        “relationship-missing event” should be forthcoming.    -   Action: Discard the new relationship event. Alternatively, see        if it is contained in the SAN manager 20 database, and if so,        change the state to “suspect”.    -   Problem Scenario #2) Relationship object is already listed in        the SAN manager 20 service database and its state is not        “missing”.    -   Probable Cause: The databases are out of sync.    -   Action: Perform database recovery actions: (See list of possible        actions below.)    -   Problem Scenario #3) One of the corresponding devices is not        listed in the SAN manager 20 service database.    -   Probable Cause: (small) timing window.

The following example further illustrates how a small timing window cancause such a problem scenario:

-   -   at time t1, a device, herein referred to as Dev2, is added to        the discover engine database and a new device notification is        sent to the SAN manager 20 service,    -   at time t2, a relationship R12 is added to the discover engine        database,    -   at time t3, Dev2 is removed from the discover engine database,    -   at time t4, the SAN manager 20 service attempts to retrieve Dev2        from the discover engine database as a result of the event at        time t1. Dev2 is not present, and the SAN manager 20 service        takes no action,    -   at time t5, the SAN manager 20 service receives R12, but it        fails to add R12 to its database because Dev2 is not in the SAN        manager 20 database.    -   Action: If adding the relationship object fails because the “to        or from” object is not there, take no action on this event and        assume that a Relationship Missing event will be received.    -   Modified Attribute Event    -   Problem Scenario #1) Device is not contained in the SAN manager        20 service database.    -   Probable Cause: Missed processing one or more events—the SAN        manager 20 database is corrupted.    -   Action: Perform database recovery actions. (See list of possible        actions below.)    -   Problem Scenario #2) Device is contained in the SAN manager 20        service database, but its state is “Missing”.    -   Probable Cause: Missed processing one or more events—the SAN        manager 20 service database is corrupted.    -   Action: Perform database recovery actions. (See list of possible        actions below.)    -   Missing Device Event    -   Problem Scenario #1) Device is not contained in the SAN manager        20 database.    -   Probable Cause: The device went missing before a New Device        Event could be processed.    -   Action: Discard the event.    -   Problem Scenario #2) Device is in the SMS DB and its state is        “Missing”.    -   Probable Cause: Very similar to Scenario (1), except in this        scenario earlier new & missing events were handled.    -   Action: Discard the event.    -   Missing Relationship Event    -   Problem Scenario #1) Relationship is not contained in the SAN        manager 20 service database.    -   Probable Cause: The relationship went missing before a        New-Relationship Event could be processed.    -   Action: Discard the event.    -   Problem Scenario #2) Relationship is in the SAN manager 20        service database, but its state is Missing”.    -   Probable Cause: Very similar to Scenario (1), except in this        scenario the earlier new & missing events were handled.    -   Action: Discard the event.    -   Possible Actions to Take When It Is Determined that the SAN        Manager System Database is Out of Sync with the Discover Engine        Database

In the illustrated embodiment, if the SAN manager database issufficiently out of synch with the discover engine database to requirerecovery, e.g., as determined above, the following procedures can beexecuted by the SAN manager 20 to rebuild the former in whole or inpart, optionally, followed with error logging and/or event notification.

-   -   1. Clear out SAN manager 20 system database and copy in the        discover engine database, thus rebuilding the SAN manager        database in entirety.    -   2. As an alternative to (1), compare the databases in entirety        and add in any objects from Discover engine database and delete        or mark as missing any objects unique to the SAN manager 20        service database.    -   3. As an alternative to (1) and (2), which require a pass        through one or both databases in their entirety, fix the problem        locally. For example, if a Modified Attribute event occurs for        an object not in the SAN manager 20 service database, the object        is retrieved from the discover engine database ignoring any        other discrepancies.    -   4. Alternative (3) can be expanded to not only get the absent        object, but to also look for immediate relationship objects and        other neighboring objects that might also be absent. A threshold        can be set (and then resort to option (1) or (2)) making it        unnecessary to try to match the discover engine database via        traversing around the entire SAN Region.    -   5. A still further alternative to (3) is to rebuild the topology        representation from the scan histories of hosts actually or        likely to be coupled to, or in the region of, the device        represented by an object that is missing or in connection with        which the discrepancy arose. A related alternative is to compare        a portion of the topology representation containing that object        with a corresponding portion of the discovery engine database        (e.g., the scan histories of hosts actually or likely to be        coupled to, or in the region of, the device represented by an        object) and to add, mark or delete objects in the manner        described in alternative (2).    -   6. Take no action. With proper coding, no events lost or out of        order, etc, this situation should never arise. In addition, if        an administrator came to distrust the SAN manager 20 service        database, he or she can clear the database and issue discovers.    -   7. In the event of a significant problem with mismatches between        the databases, a severe error message can be generated        recommending that the administrator exercise an option similar        to options (1) and (2) rather than perform one of these steps        automatically.        Alternate Embodiment for Event Processing

To obviate the need for the service 38 to retrieve further data from thediscover engine during processing of tasks and notifications, N1, N2,N3, . . . , and to engage in conflict resolution as discussed above, thediscover engine 40 of alternative embodiments of the invention transmitsto the manager service, in addition to a notification, data sufficientfor its processing.

By way of illustration, referring again to FIG. 6, in this alternativeembodiment, the discover engine 40 communicates a notification regardingone or more changes in topology of the SAN to the manager service 38 incombination with the data that the manager service 38 needs to handlethe notification. For example, if the notification relates to a missingstorage device, the discover engine 40 not only transmits a “missingdevice” notification, but it also transmits, with the notification, theidentity of the storage device that is missing. This allows the managerservice to update its SAN topology database without a need to requestadditional data from the discover engine. The combination ofnotification and data, or “smart event” notification, can take the formof an OOP object or any other data construct or mechanism sufficient tocarry the requisite information between the services.

In another example, the use of “smart event” notifications obviates theconflict presented in problem scenario #1 above under the heading “NewRelationship Even Received”, by transmitting, from the discover engineto the manager service, a newly discovered relationship object with anotification that a SAN topology change has occurred. Similarly, otherconflict scenarios listed above can be avoided by combining thetransmission of a notification with the data needed to process thenotification.

In a still further example, a “smart event” notification can indicatenot only that a file system is overutilized but, also, can identify therespective host and the amount of degree of overutilization.

The use of smart events advantageously allows maintaining a validrepresentation of the SAN, e.g., a valid topology representation,without a need to “lock” data contained in a database regarding a changeuntil a subsystem that has been notified of the change has had theopportunity to access this data. For example, subsequent to thetransmission of a “smart” notification, indicative of a topology change,from the discover engine to the manager service, the discover enginedatabase can be updated without a need to consider whether the managerservice has completed handling the notification.

SAN Topology Recognition (Virtual SANs)

As discussed above, according to one practice of the invention, SANmanager 20 receives inband and outband data from scanners associatedwith hosts, and collates the data to generate a topologicalrepresentation of the SAN. Each host is connected, via one or moreadapters and via interconnect fabric 16, to one or more storage devices.The agent associated with each host utilizes the host's adapter todetermine the SAN elements, e.g., storage devices, with which eachadapter can communicate, i.e., the elements that the adapter can “see,”all as discussed above.

The information gathered by one host adapter is typically not indicativeof all elements, e.g., storage devices, of the SAN to which the host hasaccess. This is because communications between the adapter to any givenstorage device may be restricted by switches or switch-like interfaceson the interconnect, the storage devices and or the hosts devicesthemselves. As noted previously, such switches or interfaces are oftenemployed to define “zones” within the SAN.

By way of example, FIG. 23 illustrates a host HOST1 having two adaptersADPATER1 and ADAPTER 2. Through adapter ADAPTER1, the host cancommunicate, that is, it can “see”, only storage devices DISK1 and DISK2via a switch SWITCH1. In contrast, through adapter ADAPTER2, the hostcan communicate only with storage devices DISK2 and DISK3. Thus, thehost can only “see” a subset of the storage devices, and further, thedevices seen through one adapter form a different subset of the same“virtual” SAN as the devices than seen by the other adapter.

The SAN manager 20 utilizes a methodology described in more detail belowto disambiguate the information gathered through the host adaptersADAPTER1 and ADAPTER2, and similar adapters on other hosts connected tothe SAN, to generate a topological model of the SAN. Thus, by way ofexample, the SAN manager 20 can infer that the reported devices DISK1,DISK2 and DISK3 belong to the same virtual SAN because of the overlap,i.e., DISK2, between the zones (SAN regions) in which they fall.

The term “virtual SAN” is herein utilized to refer to those devices thatare likely to belong the same SAN, even if they do not necessarily makeup the entirety of the SAN. More particularly, a virtual SAN can be saidto comprise endpoints on the interconnect—to wit, storage devices,bridges, routers hosts, and the like,—in a set of regions, each of whichhas one or more common endpoints (typically, storage device ports) withat least one other region of that set. Elsewhere in this document, theterm SAN includes virtual SANs, unless otherwise evident from context.

A more complex scenario than that discussed above arises when multipleadapters of a host are linked via common ports of a fabric element,e.g., a switch. For example, consider a scenario in which scans from ahost indicate that its adapters see interconnect fabric switch portsP1-P12, as follows:

-   -   Adapter A1 detects ports P1 & P2,    -   Adapter A2 detects ports P3 & P4,    -   Adapter A3 detects ports P5, P6, & P1,    -   Adapter A4 detects ports P11, P8, P9, P10 & P5,    -   Adapter A5 detects ports P3 & P12.

Though they do not have any ports in common, adapters A1 and A4 are inthe same virtual SAN, since they both can see one or more ports incommon with other adapters (e.g., adapter 3).

A general approach for handling any degree of complexity is to createcollections of ports that belong together, and then work with eachcollection to ensure that all the ports that make up the collection areassociated with the same SAN. SAN assignment for each collection isbased on the following rules:

-   -   1) If any port in a collection is already known (e.g., by the        SAN manager 20) to be on an actual SAN, then all ports in the        collection are assumed to be on that SAN and not on any virtual        SANs.    -   2) If none of the ports in the collection are known (e.g., by        SAN manager 20) to be on an actual SAN, then the virtual SAN for        the port with the highest port number is used for all ports in        that collection.    -   3) If none of the ports in the collection are known to be on an        actual or virtual SAN, then a new virtual SAN is created and        used for ports in the collection.    -   4) If as a result of the above steps, a previously created        virtual SAN no longer has any ports associated with it, that        virtual SAN is discarded.

A methodology for implementing these rules is depicted in FIG. 24. Afirst step 311 is to create collections of ports that are on actual SANsor that form potential virtual SANs based on scan information in thediscover engine 40 database. This is done by traversing the databasefrom hosts to internal controllers, gathering all of the controllerports and then making calls via the operating system, to determine whichendpoint ports are seen by these ports. The controller ports and the‘seen’ ports are all added to this initial collection, referred to hereas the fromPortPool.

Once fromPortPool has been populated, the SAN manager 20 creates twomore collections called comparePorts and tempcollection. ComparePorts isseeded with a port from fromPortPool and then populated with any otherports in fromPortPool that see any ports in common with the seed port.Tempcollection is initialized with the seed port and any ports seen bythe seed port. The ports from fromPortPool that see any ports in commonwith ports in comparePorts are added to tempcollection, and the portsseen by these ports are also added to tempcollection. Checks are made toensure that none of the collections—i.e., comparePorts andtempCollection—contain any duplicates—i.e., a port is not added to acollection if it is already in it.

Once the action described in the preceding two paragraphs has beentaken, tempcollection consists of a collection of ports that mayconstitute a virtual SAN. The procedure described in these paragraphs isrepeated by the SAN manager 20 over and over again using new comparePortand tempcollection collections until fromPortPool is empty. This resultsin a collection of tempcollection port collections. The next steps areto cleanup/establish the correct SAN-Port relationships for every portin each tempcollection as described below.

In a second step 313, for each collection of ports from the first step,the manager 20 determines if any port in the collection is already knownto belong to an actual SAN. This can be determined by reference to theaforementioned manager databases, e.g., the discover engine database or,preferably, the topology database. If so, in step 315, the manager 20deletes all virtual SAN references for every port in that collection anddesignates them all as being part of that same actual SAN.

If no port in the collection is already known to be assigned to anactual SAN (as determined in step 313), the manager in step 317determines whether a virtual SAN is currently assigned to any ports inthe collection. If not, in step 319, the manager creates a new virtualSAN, tempSan, as associates it with every port in the collection, e.g.,by populating the topology database.

If a virtual SAN had been assigned to any ports in the collection (asdetermined in step 317), the manager in step 321 (i) removes theSanPortRelationships identifier for every port in the SAN that is not inthe collection, (ii) in step 323, the SAN manager goes through each portin the collection and removes all SanPortRelationships except for thosethat reference tempSan, and (iii) in step 325, the SAN manager 20creates a new SanPortRelationship from tempSan to each port intempcollection that does not already have a relationship to it.

In step 327, the manager 20 removes all virtual SANs that no longer haveany ports.

Though the discussion above is directed to assignment of interconnectfabric ports to virtual SANs, those skilled in the art will appreciatethat the techniques are equally applicable to assignment of storagedevices or other SAN components seen by the hosts.

Maintaining and Updating SAN History Data

As noted above, in the illustrated embodiment, the SAN manager stores aninternal model store 125 of the SAN topology. As illustrated in FIG. 25,that model store contains objects 126 representing components of the SAN(e.g., hosts 12, storage devices 14, interconnect element 16 a), theirattributes and the interrelationships therebetween (e.g., assignmentand/or accessibility of a host 12 to a storage device 14). These objectscan be arranged hierarchically or otherwise (e.g., via link lists orother associations) to reflect relationships among the SAN components.

In the illustrated embodiment, the objects are object-orientedprogramming “objects,” though other programming constructs can be usedin addition or instead. Moreover, in the illustrated embodiment, theobjects are maintained both in a persistent database, as well as in aruntime form (e.g., in the random access memory of manager 20).

The SAN manager 20 additionally includes a historical model store 128that reflects a one-deep history (or, in alternate embodiments, stilldeeper) about specific components and/or relationships within the SAN—towit, components and/or relationships that have recently changed. Thisinformation is used to during generation of displays enumerating (e.g.,listing) the SAN componentry and/or showing its topology (collectively,“topology”), e.g., on the administrator console 52.

Specifically, in the illustrated embodiment, it is used to identify (byway of non-limiting example, via highlighting, graying out or otherwisealtering the appearance of) graphical objects representing componentsand/or relationships that are new, missing, broken, need attention, havea changed attribute, or have attained a “suspect” status, e.g., sincethe time of the last generated display—and, more precisely, since thetime the operator/administrator last asked that such highlighting,graying-out or other identifications be cleared.

Such a display is depicted in FIG. 26. Shown there is a hierarchicaldisplay 151 of the type presented on the operator/administrator console.This includes a graphical object (e.g., icons) representing the SAN as awhole, to wit, element 153, and graphical objects representing thecomponents thereof, here illustrated as Components 1-6 (elements 155,157, 159, 161, 163, 165). It will be appreciated that the specific formof the display can be varied depending on operator preferences andneeds. Moreover, it will be appreciated that representations other thangraphical objects (e.g., text labels, and so forth) may be used.

In the illustration, Component 3 (element 159) and Component 6 (element165) are color-coded to indicate that they were newly added to the SANsince the last console presentation to the operator/administrator and/orsince the he last cleared the updates. Component 4 (element 161) isidentified as missing (e.g., and likely removed from the SAN), whileComponent 2 (element 157) is identified as suspect. In the illustratedembodiment, a component is deemed “suspect” if its status has beenreported inconsistently among the scans in which it appears. Thoughcolor coding (or shading) is used in the illustrated embodiment, it willbe appreciated that any range of visual, aural or other sensoryindicators can be employed to identify the status of displayed, updatedcomponents (e.g., Components 2, 3, 4, 6).

In contrast to having every object in model store 125 maintain statushistory for its respective component, reference objects 130(hereinafter, “HistoryData” objects) are (instantiated and) maintainedin the store 128 for only those SAN components whose statuses havechanged, e.g. since the time last displayed to theoperator/administrator and/or since the he last cleared the updates. Inthe illustrated embodiment, each HistoryData object 120 includes aunique identifier referencing the SAN object 126 to which it pertains,and further includes an indicator of the status of the underlyingcomponent (e.g., “new”, “missing”, “broken”, “moved”, “needs attention”,“attribute change” or “suspect”). Those skilled in the art willappreciate that other embodiments may use other statuses in addition orinstead (e.g., modified, offline, format degraded, etc.) It will also beappreciated that the HistoryData object may maintain additionalinformation (e.g., time stamps, etc.) Moreover, it will be appreciatedthat in the illustrated embodiment, no HistoryData object is maintainedfor objects (and underlying components) in model 125 whose status is“Normal”.

As above, the HistoryData objects can be object-oriented programming“objects” or other constructs suitable for these purposes. Also asabove, the HistoryData objects are preferably stored in a persistentmanner, as well in a runtime form.

The HistoryData objects are generated by the manager service 38 or otherfunctionality in the SAN manager based on a component's prior status andits current condition as reported by discover engine 40 (which, in turn,is based on information contained in the scans the discover enginereceives from the agents). Thus, for example, an object whose priorstatus was “broken” and which is reported by the discover engine asbeing “new” is assigned a status of “suspect” in a corresponding historyobject. More particularly, in one embodiment, the status of componentsas reflected by HistoryData objects is determined in accord with thefollowing table:

Current State Reported Condition Resulting State Normal Normal NormalNormal New Not Valid Normal Missing Missing Normal Off-line OfflineNormal Broken Broken Normal Attribute Changed Attribute Changed NormalNeeds Attention Needs Attention Normal Moved Moved New Normal New NewNew New New Missing Missing New Off-line Offline New Broken Broken NewAttribute Changed Attribute Changed New Needs Attention Needs AttentionNew Moved Moved Missing Normal Suspect Missing New New Missing MissingMissing Missing Off-line Offline Missing Broken Broken Missing AttributeChanged Attribute Changed Missing Needs Attention Needs AttentionMissing Moved Moved Off-line Normal Suspect Off-line New Not ValidOff-line Missing Missing Off-line Off-line Offline Off-line BrokenBroken Off-line Attribute Changed Attribute Changed Off-line NeedsAttention Needs Attention Off-line Moved Moved Broken Normal SuspectBroken New Suspect Broken Missing Missing Broken Offline Offline BrokenBroken Broken Broken Attribute Changed Attribute Changed Broken NeedsAttention Needs Attention Broken Moved Moved Attribute Changed NormalAttribute Changed Attribute Changed New Not Valid Attribute ChangedMissing Missing Attribute Changed Off-line Offline Attribute ChangedBroken Broken Attribute Changed Attribute Changed Attribute ChangedAttribute Changed Needs Attention Needs Attention Attribute ChangedMoved Moved Needs Attention Normal Suspect Needs Attention New Not ValidNeeds Attention Missing Missing Needs Attention Offline Offline NeedsAttention Broken Broken Needs Attention Attribute Changed NeedsAttention Needs Attention Needs Attention Needs Attention NeedsAttention Moved Moved Suspect Normal Suspect Suspect New Not ValidSuspect Missing Missing Suspect Offline Offline Suspect Broken BrokenSuspect Attribute Changed Attribute Changed Suspect Needs AttentionNeeds Attention Suspect Moved Moved Moved Normal Moved Moved New NotValid Moved Missing Missing Moved Ofiline Offline Moved Broken BrokenMoved Attribute Changed Attribute Changed Moved Needs Attention NeedsAttention Moved Moved Moved

Of course, those skilled in the art will appreciate that otherembodiments might have different resulting states, depending on thecurrent state and reported condition of a component. Moreover, it willof course be appreciated that other embodiments may use other statesinstead or in addition.

No HistoryData objects are generated for components whose status is“Normal.” Nor are any generated for those whose state is “Not Valid.” Inthe event the resulting state of a component is the latter, the managerservice 38 generates a notification to the operator/administrator and/orto a log file, at the same time removing the component from the topologyrepresentation.

When the operator/administrator requests a topological display of theSAN, e.g., of the type shown in FIG. 26, the manager 20 can generategraphical objects 153, and so forth, representing components (andinterrelationships) in the internal model 125. It can, then, scan theobjects in the HistoryData object database 128 to determine whichgraphical objects require color-coding or other modification to indicatethe “new,” “suspect,” “missing” or other statuses. Those skilled in theart will, of course, appreciate that the display generation can proceedin reverse or other order based on the content of the stores 125 and128.

Likewise, when the operator/administrator requests that the modeldisplay 151 be updated to “clear” or incorporate the changes indicatedby color coding (or otherwise), e.g., to no longer highlight Components3 and 6 as new, to no longer display missing Component 4, and to nolonger display suspect Component 2, the manager 20 scans the store 128to determine which graphical objects in the display 151 require updateddisplay (e.g., with no highlighting).

In the illustrated embodiment, a different action is taken depending onthe particular state of each displayed graphical object. For example,the table below list some exemplary states of objects in a SANrepresentation 151, and the actions taken upon administrator/operatorrequest for updating.

Object's Current State Action Taken Normal (no action) New Change thestate to “Normal” and delete HistoryData object) Missing Remove theobject from the model and delete HistoryData object) Suspect Change thestate to “Normal” (and delete HistoryData object) Off-Line (no action)Broken (no action) Attribute Change Change the state to “Normal” (anddelete HistoryData object) Moved Change the state to “Normal” (anddelete HistoryData object) Needs Attention Change the state to “Normal”(and delete HistoryData object)

In addition to use in connection with presentation of the display 151,objects in the HistoryData store 128 can be used by the manager 20 inconnection with internal determination of the SAN topology. For example,the manager 20 can send requests to the agents for re-scanning ofcomponents identified as “suspect.” By way of further example, themanager can wholly or partially delay processing of “new” or “missing”components pending acknowledgement by the operator/administrator via theaforementioned clear history operation, or the like.

LUN Selection For File System Extension

As discussed above, if a host 12 file system utilization exceeds apre-defined threshold, its respective agent transmits a request to theSAN manager for file system extension. The agent determines thenecessity of transmitting such a request by periodically checking hostfile system utilization, e.g., at a pre-set interval determined by theoperator or otherwise. Alternatively, or in addition, it can monitorrequests made by the host to its file system and/or monitor the LUNsassigned to the host as part of that file system.

Upon receipt of an extension request from an agent, the SAN manager20—and, particularly, policy engine 38A (FIGS. 7A and 7B)—determines ifthe host is eligible for file system extension and, if so, whether anyof the storage devices (LUNs) accessible to it (and available forassignment) meet the extension criterion for that host. If affirmativeon both counts, the manager 20 assigns the requisite LUNs to the host inthe manner described above.

More particularly, in the illustrated embodiment, when the file systemmonitor 80 (FIG. 17) detects that a the file utilization of a host hasexceeded a pre-defined threshold, for example, via receiving a messagefrom the host's respective agent, an event is sent to the SANStorAuto78. The policy engine 38 a receives this event and determines if thefile system can and/or should be extended, or if only notification isrequired. If the file system should be extended, then the policy enginedetermines what LUN to use and requests that the LUN be assigned to bythe SANLunMgr 72. Once the LUN is assigned, a File System Extensionservice (SANAgenFSExtend) 84 is called to perform the extension byutilizing the host local operating system to extend the file system ontothe newly assigned LUN. As used herein, a file system is that aspect ofthe host operating system or otherwise that manages or otherwise effectsaccess by the host to files and other information on the assignedstorage devices (LUNs) in the conventional manner.

In the illustrated embodiment, both the host eligibility and extensioncriteria are set by the operator/administrator on a host-by-host basis,or based on a hierarchical host group structure, as discussed below,though they can be set by default (e.g., based on characteristics of thehost) or otherwise. For example, using the GUI interface 98, theoperator/administrator can define certain hosts as ineligible for filesystem extension, in which case overutilization by those will have theconventional consequences (e.g., file system warnings and/or errors).Likewise, the operator/administrator can define other hosts as eligiblefor extension and, more particularly, can define the minimum (lowerbound) and maximum (upper bound) available storage capacity of anystorage devices assigned the host for that purpose.

Upon receipt of a file extension request on behalf of an eligible host,the SAN manager selects from among the storage devices accessible tothat host based on that minimum and maximum as follows. Referring to theflow chart 152 of FIG. 27, in step 154, the SAN manager identifiesindividual storage devices (LUNs), accessible to the host and otherwiseavailable for assignment to it (e.g., in the manner described above),whose available storage falls within the range defined by the minimumand maximum. In the case of a host that utilizes a RAID file system withstriping, the SAN manager identifies such storage devices where therange of available storage falls between the minimum divided by (s) andmaximum divided by (s), where (s) is the number of stripes specified forthat file system.

In step 156, the manager selects, from among the identified storagedevices (LUNs), the storage device that has a maximum storage capacity,and assigns this storage device to the requesting host, for example, ina manner described above in the section entitled “Lun Management.”Further, in some embodiments, the manager can make this selection andassignment from among storage devices of specific type or characteristic(e.g., as defined for the host by the operator/administrator orotherwise).

In the absence of any storage device with a storage size in a rangebetween the lower and the upper capacities (both, divided by (s), in thecase of a striped file system), in step 158, the manager selects a pairor other combination of accessible and available storage devices whosecombined storage capacity equals or exceeds the minimum (divided by (s),in the case of a striped file system) for the host in question, but doesnot exceed the maximum (divided by (s), in the case of a striped filesystem) for that host. In one embodiment, the manager begins thisselection process with an accessible/available storage device having thelargest storage capacity. The manager continues by selecting additionalstorage devices, for example, in a descending order by storage size,until the combined storage capacity of the selected storage devicesequals or exceeds the minimum storage capacity and does not exceed themaximum (again, where both the minimum and maximum are divided by (s),in the case of a striped file system). If a suitable combination of twoor more storage devices is found, in step 160, the manager assigns theselected storage devices to the requesting host.

In addition to storage size, accessibility and availability, the managercan employ other criteria for selecting a storage device for assignmentto a host requesting file system extension. For example, the SAN managercan eliminate from the selection process any storage device (LUN) whoseassignment to the host in question (or any host) in response to aprevious file extension request, had failed—e.g., as a result ofhardware failure, software failure or otherwise. The removal of suchstorage devices from selection menu can advantageously ensure a moreefficient file system extension by minimizing the probability that theassignment of a selected storage device that may fail a second (orsubsequent) time.

In some embodiments of the invention, one or more storage devicescoupled to the SAN utilize RAID (Redundant Array of Independent Disks)storage systems in which part of the physical storage capacity isemployed to store redundant data or corresponding control information(e.g., error checking codes). As known in the art, RAID systems aretypically characterized under designations such as RAID 0, RAID 1, RAID2, RAID 5, and so forth.

Typically, the disks are divided into equally sized address areas,typically referred to as “blocks.” A set of blocks from each disk thathave the same unit address ranges are referred to as “stripes”. RAID 0architecture relates to a disk system that is configured without anyredundancy. RAID 1 architecture utilizes mirror redundancy, and RAID 5architectures employs parity-type redundant storage. For example, in aRAID 5 system, data and parity information are distributed across all ofthe system disks. In a RAID 5 system, each stripe includes N blocks ofdata and one parity block. A RAID ‘0+1’ system, as used herein, employsmultiple mirror redundancies for each stripe, and a RAID ‘1+0’, as usedherein, employs multiple stripes for each mirror redundancy.

When extending a software RAID file system of a host, it is typicallynecessary to assign multiple storage devices (LUNs) of the same size toallow for redundant data storage. The SAN manager utilizes a methodologydescribed below to determine the number of storage devices (LUNs) of thesame size that are needed for assignment to a host, having access to aRAID file system, that is requesting file system extension.

In particular, the SAN manager utilizes the following algorithm todetermine the number of storage devices (LUNs) to be assigned fordifferent RAID file systems:

-   -   For a Raid=‘1’ file system having a number of mirror        redundancies (m), the manager determines the number of LUNs (n)        in accord with the relation:        n=m+1    -   For a Raid=‘0’ file system having a number of stripes (s)        greater than 1, the manager determines the number of LUNs (n) in        accord with the relation:        n=s    -   For a Raid=‘5’ file system having a number of stripes (s)        greater than two, the manager determines the number of LUNs (n)        by in accord with the relation:        n=s    -   For a Raid=‘0+1’ file system having a number of stripes (s) and        a number of mirror redundancies (m), the manager determines the        number of LUNs (n) by in accord with the relation:        n=s*(m+1)    -   For a Raid=‘1+0’ file system having a number of mirror        redundancies (m) and number of stripes (s), the manager        determines the number of LUNs (n) by in accord with the        relation:        n=(m+1)*s        Large Scale Mechanism for Rendering a SAN Topology

As discussed above, the SAN manager (FIG. 15, item 20) provides agraphical user interface (GUI) to display components of the SANtopology, such as, the hosts, the storage devices, along with theirinterconnections and attributes. Particularly, as an example of a GUIutilized by the SAN manager 20 of the invention, FIG. 16 illustrates adisplay 100 in a portion of which a storage device, and its selectedattributes (e.g., serial number, product Id) are shown. The storagedevice is identified in a first panel, while its selected attributes aredisplayed in a second panel that is vertically separated from the first.Selection of the storage device in the first panel (by clicking on theicon representing the storage device) results in the display of itsproperties in the second panel.

In the illustrated embodiment of the invention, the SAN manager 20drives a GUI to render large SAN topology configurations using ahierarchical, multi-view approach. The hierarchy is based on division ofthe SAN topology into “segments” which are separated from one another bythe elements that make up the interconnect fabric 16, e.g., switches,hubs. The segments are then layered in a structural arrangement thatallows the manager 20 to generate a display that hierarchically presentsthe SAN topology. As used here, a segment refers to portion of the SANcontaining multiple components (e.g., hosts 12, storage device 14, SANmanger 20)—typically, though not necessarily, interconnected—whetherrepresented as (i) individual components and/or (ii) one or more furthersegments. At a high hierarchical level, a segment can refer to theentire SAN or even multiple SANs in an enterprise (see, for example,FIG. 28). At a low level, a segment can refer to an individualcomponent. At intermediate levels, it can refer to segments of the typeillustrated in the main panels of FIGS. 29-32.

The manager 20, using for example the interface illustrated in FIG. 15and/or the NetView interface functionality shown in FIG. 6, generates adisplay of the segment layers comprising the SAN topology representationon the operator/administrator console consoles 22 a, 22 b (or othergraphical HMI devices of the type discussed above in connection withFIG. 2). In the illustrated embodiment, the display contains multiplepanels. The main panel depicts a current segment or layer of thehierarchy. One or more navigation panels (each containing one or moreicons), e.g., located along the bottom and/or side of the display,permit traversing of the hierarchy.

In the main panel, the manager 20 presents graphical objects (e.g.,icons) representing the devices or segments at a current level of theand the elements that make up the interconnect fabric 16 that connectthose devices or segments. The manager 20 responds tooperator/administrator selection of those icons for selectivelypresenting lower layers (drilling down) into the hierarchy, ordisplaying properties of the selected element. Further understanding ofthe illustrated embodiment can be realized from the discussion below.

FIG. 28 depicts a top-level (root) view 162 that comprises arepresentation of all the SANs 166 known to the SAN manager describedabove. The view 162 contains one or more graphical objects (e.g., icons)164, each representing one of the SANs 166 known to the SAN manager 20.A detailed view of a particular SAN and its components can be displayedby selecting the corresponding graphical object 164 residing in thenavigation panel. It will be appreciated that the specific form of thedisplay can be varied depending on operator preferences and needs.Moreover, it will be appreciated that representations other thangraphical objects (e.g., text labels, and so forth) may be used.

FIG. 29 depicts the detailed SAN view 168 that is displayed uponselection of the corresponding graphical object (FIG. 28, item 164). TheSAN view 168 contains a SAN map 170 (located in the main panel of thedisplay) that is a representation of elements 182, 184, 186 thatcomprise the SAN and are associated with that level in the hierarchy.The displayed elements are graphical objects that represent two switches182, 186, and an interconnect element 184 that have correspondingsegment maps and an interconnect element map.

Graphical objects 176, 178, 180 (located in the navigation panel of thedisplay) are provided for selecting and displaying detailed views of aparticular segment map, or interconnect element map. Alternatively,items 182, 184, and 186 (displayed in the main panel) can be selecteddirectly to display a particular segment map. For example, by selectingthe interconnect element graphical object 178, the corresponding map(FIG. 30 described below) is displayed.

By selecting the various graphical objects, an administrator cantraverse the layers of segments that make up the hierarchy. Recoveryback to higher levels of the hierarchy can be achieved by selecting theroot graphical object 172 or the SAN graphical object 174, which revertsthe display to that depicted in FIG. 28 and FIG. 29 respectively.

FIG. 30 depicts the interconnect elements 188 that are displayed as aresult of selecting the interconnect element graphical objects (FIG. 29,item 178 or item 184). The interconnect element map 194 (located in themain panel of the display) contains graphical objects 196, 198 for eachof the interconnect elements (switches and hubs) in the SAN. Graphicalobjects 190, 192 are also provided in the navigation panel fortraversing the different levels of the hierarchy. Selecting a graphicalobject 196, 198 on the map 194 displays the properties of the specifiedinterconnect element.

The illustrated embodiment provides multiple types of segment maps. Oneis the interconnect element segments (FIG. 30, discussed above) whichare accessed from the SAN map (FIG. 29, discussed above). These mapscontain the interconnect element and the devices directly connected tothe interconnect element as well as the connections (FIG. 31, discussedbelow). Another type of segment map is the default segment that is usedwhen there are no interconnect elements in the SAN. This segment simplycontains the set of devices that comprise the SAN.

FIG. 31 depicts a segment map display 200 containing a set of devices206, 212, 214, 216, 218, and interconnect elements 208, 210. Graphicalobjects 202 are provided for traversing the associated levels of thehierarchy. The segment map 204 could be displayed, for example, as aresult of an administrator selecting the segment graphical object (FIG.29, items 186 or 180) on the SAN map (FIG. 29, item 170).

The displayed map 204 contains a graphical object for the interconnectelement 208, and graphical objects for each of the devices 212-218connected to the switch 210. The devices 212-218 can comprise hosts,storage devices, and other elements. Each of the devices 212-218 isconnected to a respective port on the switch 210. Item 206 denotes thatthere are multiple devices connected to a particular port on switch 210,and therefore comprises a segment of its own. Selecting item 206 in themain panel displays the corresponding map shown in FIG. 32.

FIG. 32 depicts a ring segment 220, which is another type of segment mapthat is used when there is more than one device 228-238 connected on aparticular port of a switch 226. Instead of displaying all of thedevices on the interconnect element map they are instead represented bya nested ring segment graphical object (FIG. 31, item 206). Selecting(drilling into) the graphical object displays the devices 228-238 thatcomprise the ring segment 224.

In some embodiments of the invention, the selected status of componentsor interconnects is displayed in alternate form, e.g., highlighted withdifferent colors, blinking, or having a textual message, to indicate theparticular status, e.g., failed, missing, suspect, etc. In addition, thedisplay of segments containing such components can be similarly alteredto reflect that they contain components or interconnects of such status,e.g. failed. For example, referring to FIG. 32, a failure of item 238results in the failure status getting propagated through all of thescreens presented by the display. The failing device 238 on segment map224 results in the upper level maps indicating a failure within thehierarchy. Selecting the icons at each level that indicate failurestatus will eventually reach the map showing the failed component 238.

In still other embodiments of the invention, there is provided a“default” segment that is displayed as containing all devices (e.g.,hosts and storage devices) for which the SAN manager 20 does not haveconnection information.

Hierarchical File System Extension Policy

As noted previously, the manager 20 utilizes a “policy” to extend filesystems on host machines 12. Thus, for example, referring to FIG. 27,the manager 20 responds to a file system extension request from an agent24 to assign storage devices 14 to the associated host 12 based on apolicy that establishes maximum and minimum extension size boundariesfor that host. More particularly, in the illustrated embodiment,associated with each host 12 is a set of attributes defining a policyfor file system extension. These include

-   -   a monitor flag indicating whether or not the file system of the        host is being monitored by its associated agent;    -   an extend flag indicating whether or not the host file system        can be extended;    -   a threshold value defining a point at which the host file system        is to be extended;    -   a LUN group defining storage devices onto which the file system        can be extended;    -   an extension minimum size defining the minimum increment by        which a file system can be extended;    -   an extension maximum size defining the maximum increment by        which a file system can be extended;    -   a max file system size defining the maximum size a file system        can be; and    -   an alert interval defining how often event notification is        provided.

Those skilled in the art will, of course, appreciate that otherattributes can be used, in addition and/or instead of the foregoing, todefine the policy for each host. Moreover, though the discussion belowis primarily focused on definition and application of attributes (and,thereby, policies) for hosts, these teachings are applicable, as well,toward definition of policies for other SAN components, such as storageunits (or LUNs) 14, as well as for interconnect elements 16.

Policy attributes for the hosts 12 are defined by default and/or by theoperator/administrator, as discussed below in the section entitled“Display And Management Of A Policy Hierarchy.” Those attributes can bedefaulted and/or assigned on a host-by-host basis. However, they canalso be inherited from attributes assigned (by default and/or theoperator/administrator) to any of several hierarchical groupings inwhich each host, group of hosts, or file systems belongs, so as tofacilitate the definition and application of uniform policies among thehosts 12 (or other SAN components).

In the illustrated embodiment those hierarchical groupings are,proceeding from highest to lowest: (i) domain level or default policy;(ii) host group policy; (iii) host policy, and (iv) file system policy.The domain level is the root node in the policy hierarchy andestablishes the default attributes for all hosts 12 in the SAN. The hostgroup policy defines policy attributes for each host group, of whichthere can be zero, one or more—as defined by default (e.g., based onhost type, location, or other characteristics) or by theoperator/administrator. The host policy defines the policy attributesfor a give host and, by default, applies to all of its file systems. Afile system policy defines attributes of each file system maintained bya host. In alternate embodiments, greater or fewer hierarchical groupscan be employed, as can groupings other than or in addition to thoselisted here.

In the illustrated embodiment, policy attributes not defined at aspecific level in the hierarchy are inherited. Thus, each file systeminherits the policy attributes of the host in which it (the file system)resides, except for those attributes defined for that file system. Eachhost, in turn, inherits policy attributes of the host group in which itresides, except for those attributes defined for that particular host.Each host group, moreover, inherits policy attributes for the domainlevel, except for those attributes defined for that particular host.

FIG. 33 illustrates an example of a policy hierarchy 240 utilized in theSAN manager 20 in accordance with an embodiment of the presentinvention. The SAN domain 242 is the root level of the policy hierarchy,and contains a set of parameters 244 that represent a fixed set ofpolicy attributes that are inherited by lower levels in the policyhierarchy 240, unless overridden at those levels.

Illustrated attributes 244 include a monitor flag, extend flag,threshold value, LUN group, extension minimum size, extension maximumsize, max file system size, and alert interval, all as defined above.Though as noted above other attributes can be used in addition orinstead. Sample values for these parameters are shown in parenthesis.For example, in the illustration a default value for the monitor andextend flags is “on”; a default threshold value is 90% and so forth.

Host group 246 defines a policy for two hosts 250, 254. A thresholdvalue 248 is established for this group that overrides the defaultthreshold value 244 that was defined at the domain level 242. Therefore,both hosts 250, 254, and the file system 258 will inherit the newthreshold value 248 rather than the default attribute 244.

In the illustration, host 250 itself has a policy attribute thatoverrides the default LUN group attribute 244: here, specifying that anyfile system extension will utilize a LUN from the RAID1 group 252. Inaddition to the selected LUN group 252, the attributes pertaining to thefirst host 250 include the threshold value 248 defined by the host group246, and all other default attributes 244 defined in the SAN domain 242.The manager 20 utilizes these attributes when extending a file systemassociated with the first host 250.

The second host 254 overrides the extend flag default 244 by setting anew value 256. The host 254 also inherits the threshold value 248 fromthe host group 246. All of the other policy attributes associated withthe host 254 are inherited from the established defaults 244 set in theSAN domain 242. The manager 20 to extend file systems associated withthe second host 254 utilizes these policy attributes.

A policy is also created on the second host 254 for file system 258.Attribute values are explicitly set for the extend flag 260, max filesystem size 262, and the alert interval 264. The file system 258therefore does not inherit the extend flag value 256 that was set by thesecond host 254, because the explicit setting of the extend flag 260overrides the earlier setting 256. The remaining attributes areinherited from the defaults 244 set in the SAN domain 242.

Host group 266 defines a policy for multiple hosts 270, 272, 274. A newthreshold value 268 is defined that overrides the predefined defaultthreshold value 244. This results in host3 270, host4 272, and host5274, inheriting the new threshold value attribute 268. However, allother attributes will be inherited from the default list 244 as definedin the SAN domain level 242. Specifically, the multiple hosts 270, 272,274 associated with the host group 266 have the following attributes intheir policy definition: monitor flag (on), extend flag (on), thresholdvalue (85%), LUN group (any), extension minimum size (1 GB), extensionmaximum size (10 GB), max file system size (30 GB), and alert interval(1 day).

The host 276 is not included in a host group 266, 246, and thereforeinherits all the predefined attributes 244 from the SAN domain 242,except for those explicitly set. In this instance, the host 276 hasexplicitly set attribute values for a threshold value 278, LUN group280, and max file system size 282.

In the illustrated embodiment, the policy hierarchy is represented by ahierarchy of object oriented programming (OOP) objects or other inruntime data structures. It is likewise persisted to a database (notshown), e.g., in the manner described above in connection with FIG. 13.In operation, the manager 20 access these runtime data structures and/ordatabase to discern a policy for file system extension, e.g., inconnection with the processing sequence described above in connectionwith FIG. 7A.

Display and Management of File System Extension Policy Hierarchy

As discussed above, the SAN manager (FIG. 15, item 20) provides agraphical user interface (GUI) to display components of the SANtopology, such as, the hosts, the storage devices, along with theirinterconnections and attributes. Particularly, as an example of a GUIutilized by the SAN manager 20 of the invention, FIG. 16 illustrates adisplay 100 in a portion of which a storage device, and its selectedattributes (e.g., serial number, product Id) are shown. The storagedevice is identified in a first panel, while its selected attributes aredisplayed in a second panel that is vertically separated from the first.Selection of the storage device in the first panel (by clicking on theicon representing the storage device) results in the display of itsproperties in the second panel.

Continuing the discussion from the section entitled “File SystemExtension Based On A Hierarchical Policy Having Attribute Inheritance,”the manager 20, using for example the interface illustrated in FIG. 15and/or the NetView interface functionality shown in FIG. 6, provides agraphical user interface (GUI) on which the policy hierarchy isdisplayed and through which the policy attributes can be set or modifiedby the operator/administrator. The manager 20 generates the display soas to present the policy hierarchy and corresponding attributes in afirst panel, while presenting list controls, dialog boxes or othereditable fields for each policy and attribute value in a second panel(e.g., separated vertically from the first panel). As fields of thesecond panel are modified by the operator/administrator, thosemodifications are immediately presented in a refreshed hierarchicalpolicy view on the first panel. In the illustrated embodiment, themanager maintains a constant display of policy attributes values at eachlevel in the hierarchy, making the policy visible for all levelssimultaneously.

FIG. 34 illustrates a GUI generated by manager 20 for purposes ofdisplay and management of a policy hierarchy 284 in accordance with anembodiment of the present invention. The display 284 is separated intotwo vertical panels 286, 288, though will be appreciated that otherscreen arrangements may be utilized (e.g., horizontal panels, cascadingpanels, and so forth).

In the first panel 286, the manager 20 presents a hierarchical graphic290 (in this case, in tree form—though other forms can be used insteador in addition) that represents the entire policy hierarchy for the SANand the attribute values for each policy level. To avoid clutter, onlyoverride values are shown at each level, except for the domain levelwhere all values are effectively “overrides.” Thus, for example, branch291 depicts all policy attributes at the domain level, while branch 292depicts only the override values for Host Group A host group policylevel (with items 294, 296, and 298 specifying the specific overridesfor that group). For convenience, levels for which all values areinherited can be marked with a designator such as “(All propertiesinherited).”

The second panel 288 presents a plurality of editable fields 300 for allpolicy attributes for a policy level selected in the first panel, inthis case policy 292. Through edit fields 300, the manager 20 permitsthe operator/administrator to modify the policies and inheritedattribute values 290. Modifications made in any of the editable fields300 in the second panel 288, are immediately represented in a refreshedview of the hierarchical policy structure 290 in the first panel 286.Moreover, any changes made to a value, in say, a host group level 292changes the inherited value of that property on its associated hosts(host3).

For example, selection of a particular policy 292 in the policyhierarchy structure 290 displayed in the first panel 286, results in thedisplay of editable fields 300 in the second panel 288 that correspondto attributes 302, 304, 306 and inherited attribute values of thatpolicy 292. Changes made by an operator/administrator to the thresholdvalue 302, alert interval 304, and maximum file system size 306 in thesecond panel 288 are immediately reflected in the corresponding values294, 296, 298 in the policy hierarchy structure 290 displayed in thefirst panel 286. Moreover, the modifications made to items 294, 296, 298are inherited by the associated hosts (host3) of that host group 292. Inthis instance, host3 inherits the alert interval 294, max file systemsize 296, and threshold 298 from host group 292. All the otherattributes of host3 are inherited from the default values at the domainlevel of the policy hierarchy 290.

LUN Masking on Windows NT Hosts

As discussed above, storage devices are assigned to the host devices 12by the manager 20, which effects those assignments using the agents onthe respective host devices. Referring back to FIG. 10 and theaccompanying text, assigned LUN IDs are communicated to the hosts viathe disk manager 76, which updates the filter drivers 79 on therespective hosts. When a host file system makes an attempt to mount astorage device, the filter driver 79 (FIG. 10) intervenes, comparing anidentifier of the device being mounted against the assigned LUN IDs. Thedriver 79 fails devices for which there is not a match and succeeds (orat least passes for normal treatment by the operating system) those forwhich there is a match.

FIG. 36 depicts a storage driver architecture of the Windows™ NToperating system of an exemplary host 12 modified in accordance with theinvention to provide these features, referred to elsewhere herein as“LUN masking.”

The illustrated portion of the modified operating system 350 comprises astorage class driver 352 and port driver 356 of the conventional varietyknown and used in the art for the Windows™ NT operating system. Inalternate embodiments, commercial or proprietary drivers providing likefunctionality can be used in addition or instead.

Generally, storage class driver 352 and port class driver 356 operate inthe conventional manner to translate IRPs from the file system toappropriate form for transfer to the host bus adapter (see FIG. 23,ADAPTER1 & ADAPTER2) associated with the attached storage devices (FIG.23, DISK1-DISK3). More particularly, the storage class driver 352 usesthe SCSI port/class interface to control one or more devices 14 on anybus for which the system provides a storage port driver 356. The portdriver 356 serves as an interface between class drivers 352 and the hostbus adapter (HBA) (FIG. 23, ADAPTER1) that is connected to one or morestorage devices (FIG. 23, DISK1-DISK3). The SCSI port driver 356receives SCSI request blocks (SRBs) from higher-level drivers (e.g.,class driver, filter driver), and translates the SRBs into bus-specificcommands that are then transferred to an HBA. An adapter-specific SCSIminiport driver is coupled to the port driver 356, and provides supportfor the particular SCSI HBA.

In the illustrated embodiment, filter driver 354 is interposed betweenstorage class driver 352 and port driver 356. The filter driver includesa table 354 a, or other data structure, listing LUN IDs that have beenassigned to the associated host. The table is loaded and updated by thedisk manager 76 (which typically communicates with the filter driver 354and table 354 a via a user mode applications program (not shown)) asdiscussed further below and can be persisted in a conventional manner,e.g., via a database or other persistent storage, not shown. (Inalternate embodiments, rather than listing LUN IDs of devices that havebeen assigned to the host, the table 354 a list LUN IDs of devices thatfrom which access by the host to be blocked. Such alternate embodimentsoperate in the manner discussed herein, as appropriately modified toaccount for this difference in table content).

In normal operation, e.g., during boot-up of the Windows NT operatingsystem or when the ports are otherwise scanned during system operation,the SCSI port driver 356 queries the SCSI bus to identify devices thatare in communication with host 12. The port driver 356 then loads theSCSI addresses (each comprising multiple fields, e.g., port, bus, targetid, logical unit number) of found devices (e.g., LUNs) into a portdriver structure, and updates the Windows NT registry. The port driveralso generates a physical device object for each identified device.

Continuing, in normal operation, the SCSI class driver 352 (aconventional Windows NT storage class driver) traverses the list offound device addresses, and issues claim requests to the port driver 356for each of them. Normally, the SCSI port driver 356 responds to each ofthose requests by noting that the device is available to be claimed. TheSCSI class driver 352 then creates a device object, making way for thefile system or other aspects of the operating system (or anyapplications executing thereon) to access the device.

The filter driver 354 selectively intercedes in this process byintercepting the port driver response to claims issued by the classdriver 352 for fiber channel devices. For such claims, the filter drivercompares the identified devices against the LUN IDs listed in the datatable 354 a. More particularly, for each LUN ID in the table 354 a, thefilter driver 354 applies the associated algorithm (which, as notedelsewhere herein) is part of each LUN ID) to the identifying informationcontained in each claim (or otherwise obtained for the underlyingdevice, e.g., from its Page 83 h and/or Standard Page information, forexample, obtained via the port driver 356), and compares the result withthat LUN ID. If a match occurs, this indicates that the device has beenassigned by the manager 20 to the associated host.

The filter driver 354 lets these claim requests (i.e., those for whichthere was a match) pass to and from the class driver 352 and port driver356 in the normal course, such that the latter returns a normal successcode (for assigned LUNs otherwise available for claiming) and such thatthe former generates a corresponding device object.

If no match occurs for any of the LUN IDs in the table, i.e., where anattempt is made to claim a LUN that has not been assigned, the filterdriver 354 forces a failure return by the port driver 356, thus,preventing creation of a device object.

In this manner, the filter driver prevents the class driver 352 fromcreating disk objects—e.g., at system boot-up or whenever the portdriver 356 is otherwise scanned—for devices not listed in the table 354a and, thereby, prevents the file system (or other aspects of theoperating system of the host, or any applications executing thereon)from accessing fiber channel devices other than those assigned by theSAN manager 20.

In the event that a storage device, which was initially not assigned tothe host, is subsequently assigned, e.g., at the request of anoperator/administrator request via the SAN manager GUI, the disk manager76 updates the filter driver table 354 a to reflect the current list ofassigned (or unmasked) LUNs. The filter driver 354 (or otherfunctionality in the agent 24 operating on the host) then invokes theport driver 356 to re-claim all storage devices 14 identified by theport driver 356 as being connected to the host. In this regard, thefilter driver 354 simulates the operation of the class driver 352 atboot-up.

The filter driver 354 accomplishes this task by initiating“FIND_NEW_DEVICE” (or equivalent) calls for all SCSI addresses in theport driver structure. All claim requests for previously claimed devicesfail, as do those for already masked devices. The claim requests fornewly unmasked LUNs succeed, and the SCSI class driver 352 creates thenew corresponding disk objects.

In the event that a storage device which was initially assigned to thehost is subsequently unassigned, e.g., at the request of anoperator/administrator request via the SAN manager GUI, the disk manager76 updates the filter driver table 354 a and the filter driver 354initiates a request to the host operating system to mark the disk objectfor the newly unassigned device as unusable.

A further appreciation of the operation of the illustrated portion ofthe modified operating system 350 may be attained through the discussionthat follows.

A list of LUNs is stored and maintained in a common storage area, e.g.,Windows NT registry. The list is used to communicate changes to theaccessibility (such as assignment or unassignment) of LUNs to theoperating system. During an assignment or an unassignment, the list isupdated and the disk manager 76 notifies the filter drivers 354 of thechange. A LUN is considered assigned when the device object isaccessible (unmasked) to the system. A LUN is considered unassigned whenthe device object is inaccessible (masked) to the system. The managementof LUNs is thereby performed without changes to the hardwareconfiguration, and without re-boot.

An assignment is achieved by first, updating the LUN list in the commonstorage area (Windows NT registry) with the particular LUNs to assign.Then an I/O control (IOCTL) that corresponds to the filter driver 354 issent to communicate the assignment to each LUN. When the filter driver354 receives this IOCTL for any device that matches the devices in thelist of assigned LUNs, the device is unmasked. If a disk class objectalready exists for the LUNs, then all the objects are made available foraccess to the operating system. If a disk class object does not exist,then the LUNs are claimed using an IOCTL to find new devices. The actualmasking bit is maintained in the device object, so any subsequentrequests to the particular device object only require a checking of abit rather than the entire registry.

If the current device object list does not locate the assigned LUN, arequest to find new disk devices is sent through the I/O device controlinterface, i.e., IOCTL_DISK_FIND_NEW_DEVICES. TheIOCTL_DISK_FIND_NEW_DEVICES request determines whether another devicethat the driver supports has been connected to the I/O bus, either sincethe system was booted or since the driver last processed this request.If such a device is found, the driver sets up any necessary systemobjects and resources to handle I/O requests for its new device. It alsoinitializes the device on receipt of this request dynamically (i.e.,without reboot). Such a driver is assumed to support devices connectedon a dynamically configurable I/O bus.

This request generates a claim device to all the unassigned disks behinda particular port. The filter driver 354 then prevents any claiming ofdevice objects that have yet to be assigned by intercepting the claim ofeach LUN, and comparing each LUN with devices available on that port. Ifthe LUN exists, they are made available and the filter driver 354 makesthe device objects available. Once a LUN is assigned, the operatingsystem (e.g., Windows NT) maintains the device object for the course ofthe system up time. Therefore, the port driver 356 prevents aninordinate amount of device objects from being created during boot. If adisk device object cannot be claimed, it does not generate a deviceobject. But if the LUN is found, the claim is successful, and a deviceobject is created so that it can also then be checked to see if itshould be masked or unmasked.

To unassign a LUN, the common storage area (e.g., Windows NT registry)is updated by removing that device's identification. A unique IOCTL isthen sent to a filter driver (not shown) disposed “above” the SCSI classdriver 352 to remove access to all device objects for the LUN that is tobe unassigned. When unassigning a previously assigned LUN, only thatfilter driver needs to be notified because its device objects havealready been created. This requires the submission of the IOCTLdedicated to that filter driver through the device I/O control API. Oncethe IOCTL is received, the disk id is checked against the registry, andif it no longer exists, the device object is masked from future I/Oactivity. If the unassigned LUN is later reassigned, the same filterdriver, again, only needs to be notified (again, because thecorresponding device objects already exists).

LUN Masking on Windows 2000 Hosts

In an embodiment of the invention for a Windows 2000 operating system,LUN masking is performed on hosts 12 in a manner similar to thatdescribed above with respect to a host running the Windows NT operatingsystem.

The illustrated portion of the modified operating system 350 for aWindows™ host is architected and operated similarly to that describedabove with respect to the Windows™ NT operating system. LUN masking isperformed in a similar fashion to that described above for Windows™ NT,except that the filter driver 354 intercepts the class driver 352 claimsto storage devices (that are not assigned to the selected host 12), byblocking the claim requests generated by the class driver 352 in thefirst instance, rather than by blocking responses by the port driver 356to the class driver in response to such requests. As above, the blockingof claims requests in the Windows™ environment also prevents the classdriver 352 from creating device objects, thereby, preventing the filesystem (or other aspects of the operating system or any applicationsprogram executing thereon) from accessing unassigned devices.

According to the illustrated embodiment, the agent 40 prevents maskedLUNs from appearing in the Device Manger of the Windows™ 2000 interfaceby setting a flag in the data structure normally sent by theplug-and-play manager (not illustrated) with the device state query. Inaddition, the illustrated embodiment prevents the plug-and-play managerfrom generating notifications to an operator of a host 12 from which amasked device has been removed. This is accomplished by setting a flagin the data structure normally sent by the plug-and-play manager alongwith the device capabilities query.

In an alternate embodiment for a Windows™ 2000 host, masking isaccomplished by modifying a data structure populated by the port driverto reflect LUNs (or other devices) that are attached to the host.

In normal operation of a Windows™ 2000 host, the plug-and-play manager(which is a conventional component of the Windows 2000 operating system)is initiated at boot-up and creates a data structure that it passes tothe SCSI port driver 356. The port driver 356 populates that datastructure with information regarding all found devices (e.g., SCSIaddresses). The illustrated embodiment effects masking via the filterdriver 354, which removes from that data structure information regardingfiber channel devices not listed in the table 354 a. As a result,neither the plug-and-play manager nor the class driver become aware ofmasked devices and, hence, do not attempt to create disk objects forthem.

To “add” back a LUN that was previously masked, the plug-and-playmanager is initiated to create and send a new data structure to the portdriver 356 to be filled in. The plug-and-play manager is initiated byissuing from “user mode” a call to the filter driver 354, which itselfissues a kernel mode IO_INVALIDATE_DEVICE RELATIONS call. This causesthe plug-and-play manager to issue calls (IRPs) to the port driver 356,which causes refill of the data structure. Then the filter driver 354again intercepts the response from the port driver 356, and removes anyobjects from the data structure that correspond to masked devices. Thoseskilled in art will appreciate that any other sequence of calls suitablefor effecting refill of the data structure (e.g., DEVICE_RELATIONS) canbe utilized.

To mask a LUN that is already available a command (i.e., REMOVE) is sentto the plug-and-play manager from “user mode” that identifies the deviceto be removed. The plug-and-play manager then removes all structuresnecessary for I/O (including disk objects). The filter driver 354 isactive at all times to prevent any rescan from filling the datastructure with a masked device.

To unmask a LUN, a “remove” command (e.g., CM_QUERY_AND_REMOVE_SUBTREE)is issued to remove a device. Then a rescan is forced by opening theSCSI port drivers 356 and issuing to them a CM_RENUMERATE_DEVNODEcommand.

A further understanding of utilizing a device driver to mask LUNs inthis alternate embodiment for a Windows™ 2000 host may be attachedthrough the discussion that follows.

To mask LUNs at the SCSI port level an upper filter driver 354 to theSCSI port driver 356 is used. The upper filter driver 356 catches Plug NPlay request packets for devices on the SCSI port. The I/O requestpacket (IRP_MN_QUERY_DEVICE_RELATIONS) contains an array of all deviceobjects attached to the SCSI port.

Using the first byte of the SCSI inquiry data, each device on the portis checked to make sure it is a disk and then if the device is a diskqueried for the LUN ID. If the device should be masked, the last deviceobject in the array replaces the device object and the count of totaldevices is decremented. This effectively removes the masked device fromthe array. If the device is not masked the device remains in the list.After all masked disks have been removed the I/O request packet iscompleted and the list is then sent back up to higher-level drivers. Themasked disk devices are not visible to any driver higher than the filterdriver 354. As a result, the SCSI class driver 352 does not make deviceobjects for the masked devices, so the partitions on masked disks do notget mounted by the operating system.

The filter driver 354 does not change the SCSI port driver 356 data.Therefore, the SCSI port driver 356 always has a list of all devices onits ports. The filter driver 354 simply prevents masked LUNs from beingassigned.

Once Windows 2000 is booted care must be taken when masking out LUNs toavoid a surprise remove. When an unmasked LUN needs to be masked a usermode uninstall must be done to unmount the partitions and remove thedisk safely from the plug-and-play manager. The SCSI bus is thenrescanned and the device driver removes the device object from the arrayafter a user mode uninstall of the disk has been completed successfully.

When a masked LUN needs to be unmasked the SCSI bus is rescanned. Thisunmasks the LUN since the device driver is not removing the deviceobject from the array. Then the I/O request packet is completed whichcauses the SCSI class driver 352 to claim the disk and mount thepartitions that reside on the disk.

Since the device driver is an upper filter driver 354 to the SCSI classdriver 352, any host bus adapters that use the SCSI protocol work withthis configuration. Fiber channel is an example of an adapter that usesSCSI protocol.

Association of LUN ID with Physical Device Object Name

As evident throughout the discussion above, the SAN manager 20 andagents 40 utilize the LUN IDs as identifiers for the storage devices(LUNs). Thus, by way of non-example, as discussed in the precedingsections, the disk manager 76 assigns LUNs to the hosts by loading theirrespective filter drivers 354 with the corresponding LUN IDs. The hostsare permitted to access LUNs whose LUN IDs are contained in the drivertables and are precluded from accessing the other LUNs.

By contrast, many functions within the host digital processors 12inherently utilize physical device names or addresses to identifyattached storage devices. For example, the plug-and-play manager withina Windows™ 2000 host identifies storage devices via physical deviceobject names that include, among other things, port number, path number,target number and logical unit number.

The illustrated embodiment provides a mechanism for readily associatingthese physical device names/addresses with the corresponding LUN IDs,thereby, facilitating use of built-in host functions—e.g., plug-and-playmanager detection services—to determine when the SAN storage deviceshave been added, removed, enabled, disabled, otherwise affected. Thoughthe discussion here focuses on association of physical device objectnames of the type used by plug-and-play managers in the Windows™ 2000environments, those skilled in the art will appreciate that theteachings are equally applicable to forming other such associations withthis and other operating systems and operating system functions.

Referring to FIG. 36 by way of review, in normal operation of a Windows™2000 host, the plug-and-play manager (PNP) queries the SCSI port driver356 for information regarding all devices known by it. The informationincludes data such as port number, path number, target number, andlogical unit number for each found device. The PNP manager 386 generatesfrom this a physical object for each device.

Subsequently, when the PNP manager 386 detects that a storage device hasbeen added or removed, e.g., coupled or decoupled from the interconnect16, it generates an event. In a Windows™ 2000 environment, this isreferred to as a “device change” event and includes a physical deviceobject name, to wit, a string with the host bus adapter (HBA) name, portnumber, path number, target number, and logical unit number of theaffected device. In embodiments operating on hosts with other operatingsystems, such an event may have a different name and/or content.

A user mode process executing on the host receives such PNP events, solong as that process is appropriately registered with the PNP manager.The process extracts the port number, path number target number, andlogical unit number from the physical device object name and convertsthem to a form suitable for querying the device or its interface (e.g.,the port driver and/or HBA) adapter for SCSI inquiry data, e.g., of thetype contained on Page 83 h and/or Standard Page. It uses this to open ahandle to the device and obtain that SCSI inquiry data, e.g., by way ofan IOCTL_SCSI_GET_INQUIRY_DATA call in the Windows™ 2000 environment orusing a related or analogous call in other environments.

Using the SCSI inquiry data and the information extracted from thephysical device object name, the user mode process generates an LUN IDusing the algorithms discussed above in connection with FIG. 10. In thismanner, it thereby forms an association between a physical device objectname and logical identifier, to wit, a LUN ID.

In the illustrated embodiment, the user mode process forms such anassociation, e.g., for purposes of correlating the LUN ID included in astorage device assignment received from the SAN manager 20 with eventsgenerated by the host PNP manager. In this regard, the user mode processexecutes the algorithm identified within the LUN ID of the assigneddevice in order to convert the inquiry data and extracted informationinto a logical identifier. In alternate embodiments, the user modeprocess can exercise this or other LUN generation algorithms, e.g., forpurposes of matching a raft of identified LUN IDs or for other purposes.In the illustrated embodiment, the aforementioned user mode process is aPNP event listener, though it can comprise any code operating in usermode. Moreover, the mechanism discussed above can be used to associate aphysical device name or address of any device (disk or otherwise) with alogical identifier.

Fiber Channel Device Determination in Kernel Mode

As discussed above, in order to mask non-assigned LUNs, the filterdriver 354 intercepts claim requests made by the class driver 352 to theport driver 356 or, conversely, the port driver response to thoseclaims. For such claims, the filter driver compares the identifieddevices against the LUN IDs listed in the data table 354 a, applying theassociated LUN generation algorithms and comparing the results todetermine whether the response should be passed or blocked. Because thefilter driver 354 executes in kernel mode in Windows™ NT, Windows™ 2000or other such hosts, operating system, adapter or storage devicelimitations may preclude the driver 354 from consistently determiningwhether any given claim is for a fiber channel device and, hence,subject to potential masking.

The illustrated embodiment overcomes this by utilizing a user modeprocess to detect fiber channel devices on the SAN and to communicatethis to the filter driver 354 (or other functionality operating in thekernel mode) via the Windows™ registry. More specifically, upondeployment of the SAN and/or at the final phases of host boot-up, theuser mode process identifies ports to which fiber channel devices areconnected and stores that infonration to the host registry. At earlystages of a subsequent boot-up (which may occur some time later), akernel mode process validates those registry entries. The filter driver354 operates as discussed above, e.g., masking non-assigned fiberchannel devices, but also taking into account invalidity determinationsmade by the kernel mode process. The user mode process is re-executed toregenerate the registry (and, as a consequence, eliminate invalidentries), issuing new claims for any devices that were improperly maskedby the filter driver 354, e.g., on account of the kernel mode processinvalidity determinations.

Referring to FIG. 41, a process 374 executes on an exemplary host 12 inuser mode under the Windows™ NT, Windows™ 2000 or other such operatingsystem. The user mode process 374 collects information pertaining to thehost's ports 382, and stores this to the Windows registry, or otherpersistent store 380 (e.g., a database) that can be subsequentlyaccessed by the filter driver 354 or by other processes executing in thekernel mode. The collected information indicates each port's number,whether the port supports a fibre channel adapter, and verificationdata. In the illustrated embodiment, the latter comprises the name ofthe manufacturer of the port's driver software, e.g., as obtained from astandard location of the Windows™ registry (i.e., other than thatportion of the registry corresponding to store 380), though otherinformation can be used in addition or instead.

To determine which ports are connected to fiber channel devices, theillustrated user mode process 374 calls a common user mode library 376,e.g., of the type specified by the Storage Networking IndustryAssociation (SNIA). The user mode process 374 identifies the host'sother ports, i.e., those not connected to fiber channel devices, via theWindows™ registry (again, other than that portion of the registrycorresponding to store 380).

The user mode process 374 executes on the host during deployment of theSAN agent 40 software and each time the host 12 is booted-up,specifically, at a late phase of the boot-up.

During a next boot-up of the host, which may occur minutes, hours, days,weeks or even longer after the user mode process 374 was last executed(and, more significantly, after which the operator may have added,removed or switched devices and/or adaptors), the kernel level process378 is executed on the host to validate the store 380. This insures thatthe fiber channel identifications made by the previously run user modeprocess 374 are valid and, therefore, can be properly used by the filterdriver 354 later during (the same) boot-up, when the class driver 352begins issuing claims to the port driver 356.

More specifically, the kernel mode process 378 (which may reside withinor outside filter driver 354) compares the driver manufacture namemaintained in the store 380 for each port against the corresponding datamaintained in the standard location of the Windows™ registry (i.e., inthe same location previously used by the user mode process 374 toascertain those names). For each port for which the comparison isfavorable, the kernel mode process 378 stores a “valid” (or “not dirty”)flag. Conversely, for each port for which the comparison is notfavorable, the kernel mode process 378 stores an “invalid” (or “dirty”)flag.

In addition to the ports listed in store 380, the kernel mode process378 detects whether the host is coupled to any other active ports. Asabove, this is accomplished via the standard location in the Windows™registry. Ports identified in the standard location that are not instore 380 are treated as invalid (or dirty) in the discussion below.

Subsequent to execution of the kernel mode process 378, the hostoperating system (class driver 352) begins making claims for devicesattached to ports, as discussed above. The filter driver 354 (which alsooperates in kernel mode) responds by intercepting and selectivelyblocking those claims, also as discussed above. In order to determinewhether a claim is potentially subject to blocking, i.e., whether it isa fiber channel device, the filter driver 354 retrieves from the store380 the entry pertaining the port identified in each claim. Thisincludes both the indication of whether the port is a fiber channel port(per the user mode process 374) and whether the entry has been validated(per the kernel mode process 378). The filter driver operates asdiscussed above, blocking claims for validated fiber channel devicesthat are not assigned to the host 12, while passing those for validatedfiber channel devices that are. It also passes claims for devices thatare validly indicated as not fiber channel. The filter driver utilizesthe invalid determination of the kernel mode process 378 (as reflectedby the store 380), for example, to pass claims to peripheral deviceswhose store 380 entries are invalid, unless those requests are for harddisk devices that are not designated as assigned to the host 12.

A more complete understanding of the operation of the filter driver 354may be attained by reference to the following truth table.

VALID FIBRE REGISTRY CHANNEL HARD DISK LUN MASK ENTRY PORT DEVICEASSIGNED DEVICE? N N N N N N N N Y N N N Y N Y N N Y Y N N Y N N N N Y NY N N Y Y N Y N Y Y Y N Y N N N N Y N N Y N Y N Y N N Y N Y Y N Y Y N NN Y Y N Y N Y Y Y N Y Y Y Y Y N

Following completion of the “claims process,” i.e., when the hostoperating system makes claims for devices (which the filter driverselectively blocks), as discussed above, the host 12 re-executes theuser mode process 374. Since this occurs with respect to the currentconfiguration of the host ports, entries in the store 380 previouslyidentified by the kernel mode process 378 as invalid are properlyupdated. In the event that the user mode process identifies a port that(a) is connected to a non-assigned, non-fiber channel disk drive and (b)had a store 380 entry previously marked as invalid, the user modeprocess 374 causes a new, non-blocked claim to be issued for the deviceso that it can be properly accessed by the operating system.

A further understanding of the foregoing may be attained by reference tothe discussion that follows.

In the illustrated embodiment, common user mode code is utilized to usethe common user mode interface 374 prior to an install of the filterdevice drivers 354 on the operating system, and immediately following are-boot. The user mode code is only required once, because once theactive topology is known, changes to that topology are not noticed untilafter a re-boot, especially on an operating system such as Windows NTand 2000. Although Windows 2000 adds the plug-and-play option, theactual bus adapters cannot be hot plugged. Therefore, new or changed busadapters are only recognized after re-boot.

The first snapshot of the bus adapter topology is captured duringinstall. This provides an initial snapshot of the adapters 382 that areconnected to a SAN. Boot devices are not connected to a SAN and cannotchange without destroying the operating system boot start. Therefore,the concern for boot devices is gone because the initial snapshot whereboot drive exists never changes, and since all non-SAN connected devicesare never masked the boot device is available during every re-boot. Anymasking of the boot drive effectively destroys the system that is to beattached to a SAN.

The snapshots are stored in the Windows registry 380. The common usermode interface 374 identifies adapters 382 behind ports on a Windowsoperating system. Adapter drivers are written as SCSI-miniport devicedrivers on a Windows operating system, and when filtered, they areviewed as a level below port device drivers 356. Thus, only a porttopology is required when faced with the Windows operating system. Sincethis information is stored by the Windows operating system afterchanging or adding a new adapter device, it accurately depicts the porttopology of the system. The snapshot that is captured is taken from theWindows registry, and stored into another registry entry that is uniqueto the filter device drivers 354. This is the validation informationthat is used to determine if the topology has been altered after theprior re-boot, or install. The actual identification information that isused is the response received by the common user interface on whether ornot a device is connected to a SAN. This identification information isstored along with the validation information.

A re-boot invokes the filter device drivers 354 to check if a port isconnected to a SAN. The validation information is compared against whatis stored in the defined Windows hardware devicemap, and if it is valid,then the type information is considered valid and permanently stored forlater reference (any future topology changes will require a systemre-boot). If the validation information is not valid, then the filterdevice driver 354 will “dirty” the bad registry information so that thevalidation data information is no longer needed. This limits thevalidation of the data to one time during the boot cycle, once peractive port. Any “dirty” ports are masked during the initial boot. Thereis an exception though. Any port that has devices that are not diskdevices 384 will unmask such devices during a claim of these deviceswhile booting.

Immediately following a re-boot, the common user mode code is executedto update the registry and locate new devices resulting from the update.The filter device drivers 354 are notified during claim processing, andsince the information is valid, the filter device drivers 354 filteronly those disk devices 384 behind ports that are connected to a SAN.

Ensuring Validity of Data from the Scanners

As noted above, the SAN manager 20 includes one or more fiber channel(FC) discover engines 40, such as the discover engine 40 shown in FIG.6, responsible for gathering topology and attribute information for theSAN components. The discover engine 40 receives and processesinformation gathered by one or more scanners, such as scanner 42, whichcollect in-band and outband information including host and deviceinterconnectivity (e.g., which storage devices are accessible to whichhosts and host file system utilization), host attributes (e.g., filesystem information, including identities of mounted storage devices),storage device attributes (e.g., storage capacities), and interconnectelement information. In addition to maintaining a one level-deep historyof scans from the scanners 42, the discover engine 40 notifies the SANmanager service module 38 of apparent changes, such as addition of a newhost or storage device, modification of attributes of a host or storagedevice, removal of a device, or change or removal of a relationshipbetween a host and a storage device.

As a consequence of the nature and number of scanners 42 and of theinterconnectedness of the hosts and storage devices, the scans may notbe entirely consistent. For example, an inband topology scanner on onehost 12 may detect a particular storage device 14 coupled to that host12 over the fiber channel interconnect, while an outband scanner on thatsame host may not detect that device. The information does not matchperfectly, since these two scanners are able to “see” or detect slightlydifferent things in the host 12. As between the inband scanners on twodifferent hosts 14, hardware invisible to one scanner may be visible tothe other scanner, e.g., due to the configuration of the interconnect16. This scenario is additionally complicated by the varied locations ofthe scanners on the interconnect 16. To account for potentialdiscrepancies among scans, the discover engine 40 utilizes themechanisms discussed below to reconcile information received from thescanners 42 before notifying the SAN manager service module 38 ofapparent changes.

Generally, upon discerning from a scan that, for example, a storagedevice has apparently been removed, the engine 40 validates the changeusing other scans. To facilitate identifying those scans, the enginetraverses relationships reflected by a set of objects or other datastructures that represent SAN components to determine which containinformation regarding the apparently removed device. Those scans can bechecked to see if they are in accord with the scan in which the changewas discerned and/or the scanners that generated the scan(s) can bere-executed.

More particularly, referring to FIG. 37, element 400 in the discoverengine 40 receives a scan from a scanner 42 and compares it againstinformation previously received from that scanner 42 as reflected in adiscover engine database 402 (which in the illustration is depicted ascontaining the aforementioned one-deep history of scans from allscanners 42) or other store. If, as a result of that comparison, theelement 400 discovers a change, e.g., in the host associated withscanner 42 or in the SAN topology “seen” from that host, the element cangenerate and forward to the SAN manager 20 service module 38notifications as discussed above in the section entitled “EventProcessing.”

Depending on its type of change, however, the element 400 validates thechange before notifying module 38. Such validation is performed in theillustrated embodiment for device or relationship removal events,though, in other embodiments other changes can be validated in additionor instead. It is performed using objects 406 (referred to by thefanciful term “moid” objects), each of which represents a respectivescan, SAN component, component attribute or relationship. These objects406 may be object-oriented programming (OOP) objects or other datastructures.

Validation is performed by element 404, which receives from element 400notification of a change to be validated and/or the identity of the SANcomponent, attribute or relationship affected by the change. To validatea change indicating, for example, that a storage device has beenremoved, element 400 passes to element 404 the identity of that device,say, for example, “LUN 1.” Element 404 searches for a moid objectrepresenting that LUN. The search can be performed in a store, databaseor other runtime or persistent store containing such storagedevice-representative moid objects and, depending on implementation,other moid objects as well.

Like the moid objects that represent attributes and relationships, eachstorage device-representative moid object is associated with a moidobject that represents a scan. These associations reflect which scanscontain information about which component, attribute or relationship. Asinformation regarding any given component, attribute or relationship maybe contained in more than one scan, there may be multiple moid objectsfor that component, attribute or relationship, each associated with amoid object for a different scan—or, depending upon implementation,there may by only one moid object for that component, attribute orrelationship with multiple associations to the different scans.

In the illustration, associations are represented by dashed lines. Theassociations may be maintained in the moid objects themselves and/or inan associated store, database or other runtime or persistent store.

Continuing the example, by searching for moid objects representing astorage device that has been removed, the element 404 identifies,through the associations, which scans contain information regarding thatstorage device. Information pertaining to that device from those scanscan then be compared (e.g. by element 404) with the information beingvalidated. No comparison need be made with the scan that itself containsthe information being validated. In case there is no discrepancy, thechange that gave rise to the validation is indeed passed to the managerservice 38.

In case the comparison reveals there is a discrepancy, the identifiedscans and/or the scan in which the change was initially detected can bere-executed, e.g., by way of request issued from element 404.Alternatively, the apparent change can be ignored—as is the case inembodiments where removal events are ignored unless not contradicted byother scans.

The foregoing mechanism is used to validate information regarding notonly SAN components, but their attributes and relationships as well. Amore complete understanding may be attained via the discussion thatfollows.

In order to perform the above diagnostics efficiently, the discoverengine 40 needs to associate each scanner with the storage devices seenby that scanner. That is, the discover engine 40 needs to maintain notonly information regarding association of a host with one or morestorage devices but also information that links a scanner on that hostwith those storage devices seen by that scanner.

The illustrated embodiment utilizes a methodology that allows thediscover engine 40 to maintain such data in a manner such that theneeded information, e.g., which scans previously saw a particularstorage device, can be retrieved in an efficient manner.

In general, a database or other storage environment can be used torepresent an “association” between two objects, as shown schematicallybelow:

-   -   <object> . . . <association> . . . <object>

However, some of the information detected by a scanner is itselfrelationship information that indicates association between two objects.That is, scanners not only detect devices, but they also detect, interalia, relationships between devices, attribute information, and logicalentities, e.g., to which volume group a storage device belongs. Such anassociation between an object and another association can beschematically depicted as follows:

-   -   <object> . . . <association> . . . <relationship>.

The illustrated embodiment provides for the retrieval of suchinformation, by generating moid objects (or other data structures) foreach SAN component, attribute or relationship which may form part ofsuch an association. This means forming objects not only for storagedevices, hosts, and so forth, but also objects representing attributesand relationships, such as “Host 1 is assigned to LUN 1” or “Physicaldevice A contains LUN 4” or “LUN 1 is a fiber channel device.” Theseobjects can be stored in a persistent storage, e.g., an object databaseand each can hold a unique identification corresponding to the componentor association that it represents. In this manner, each scan, which isalso represented by an object, can be related to any informationdiscovered during the scan, whether it relates to a device or arelationship.

In the illustrated embodiment, the moid objects refer to tables (notshown) that are generated by the discover engine 40 on examination ofeach scan. The are tables, for example, of scans, hosts, storagedevices, attributes and component relationships. To avoid confusionregarding identifiers referring to different moid objects, each moidobject in such cases can be identified by a unique key, for example, inthe form

-   -   <table name><unique Id>.

This provides some degree of flexibility in naming various objectscorresponding to devices or associations. For example, an objectrepresenting a physical disk in a physical disk table and an objectrepresenting a logical disk in a logical disk table can be given thesame name without causing any confusion in distinguishing the twoobjects.

User Interface Architecture

As described above in the section titled “SAN Manager Console”, theconsole 52 (FIG. 6) provides a graphical interface that allows the SANmanager to view selected attributes of the SAN, such as, the SANtopology, and to submit commands, such as, refresh topology, to themanager 20. In some embodiments, software instructions for controllingthe console 52 is interwoven with the other SAN manager functions, e.g.,those of the aforementioned manager service. However, in the illustratedembodiment such control is implemented by a separate software module,“NetView,” a commercially available product of the assignee thatprovides user interface functionality, e.g., for the display of networkconfigurations. In other embodiments, still other modules (whetheravailable from the assignee or others) providing similar functionalitycan be can be used in place of NetView.

A SAN manager 20 of the illustrated embodiment utilizes a softwarearchitecture as generally shown in FIG. 6 and described in furtherdetail below to provide for operation of the console 52, here, referredto as the NetView console, via the NetView applications programinterface (API). Those skilled in the art will appreciate that theseteachings can be applied in controlling console 52 via other userinterface applications and their corresponding APIs . In the illustratedembodiment, NetView executes on the manager digital data processor,although it other embodiments it can execute on separate hardware (e.g.,in communication with the SAN manager 20 via an object request broker orotherwise). Though NetView may operate within the same processes asother SAN manager 20 functionality, it is referred to elsewhere hereinas a separate process to connote is modularity.

Communication from the NetView console 52 to the SAN Manager 20 isinitiated via the NetView Requester 60, which is an executable launchedby the NetView console 52. This executable receives callback requestsfrom the NetView console 52 and forwards these requests to the ConsoleRequest Handler 62. In this exemplary embodiment, the NetView Requester60 transmits each call back notification received from the console 52 tothe Request Handler 62 over a socket connection. Further, theinformation contained in the call back notification is preferablypresented in an XML format to provide flexibility in describing thedata. In the illustrated embodiment, the NetView Requester simplyforwards the information from the console 52 to the Handler 62 withoutany substantial re-formatting of the information received from theconsole 52. In alternative embodiments, the NetView Requester can mapthe information received from the console 52 onto a generic formatbefore its transmission to the Handler 62. This allows utilizing thesame Handler with different graphical consoles.

Although shown as a single block, the Request Handler 62 performsseveral distinct functions, and may be implemented as separateapplications. In general, the Request Handler 62 processes the eventsthat occur when a user, e.g., the operator/administrator, interacts withthe NetView console 52. For example, all menu operations, accessible viathe console 52, such as, launching a management application, areperformed via the Request Handler 62. The Request Handler 62communicates with the manager 20 and other services via the NetViewdaemon 56 and the SAN manager daemon 58.

The manager daemon 58 generally provides functions that allow theNetView console 52 to interface with the SAN manager 20. Some of thesefunctions can include, for example, retrieval of the SAN topologyrepresentation from the SAN manager 20, mapping a retrieved topology mapinto sub-maps, and handling action callbacks received from the Handler62. In the illustrated embodiment, the SAN manager daemon 58 utilizes anObject Request Broker, such as Voyager ORB, for inter-servicecommunication, such as, communication with the SAN manager 20. Thoseskilled in the art will appreciate that other communication protocolscan also be utilized.

FIG. 38 schematically illustrates functional components of an exemplarySAN daemon 56. A controller 56 a communicates with the Request Handler62 and the SAN manager 20 to process events received from the Handler62. A Mapper 56 b maps topology information received from the SANmanager 20 into sub-maps, and a Message Sender 56 c is responsible fortransmitting, for example, via a socket connection, the topology mappedby the Mapper 56 b to the NetView daemon 56 for viewing on the NetViewconsole 52. GTM object wrappers 56 d can be utilized by the Mapper 56 bfor wrapping sub-map objects. The GTM object wrappers 56 d furtherprovide helper functions to format GTM API functions into raw Stringmessages to be transmitted by the Sender 56 c.

By way of example, FIG. 39 illustrates an information flow model 364that depicts the flow of information among the above components when auser, e.g., the operator/administrator, selects a Refresh Topology itemfrom a menu presented on the NetView console 52. In response to such aselection, the NetView console 52 transmits an action event to theNetView Requester 60. The NetView Requester 60 in turn forwards theaction event, e.g., as a request, to the Request Handler 62 thatprocesses the request and issues a refresh Topology message to the SANmanager daemon 58.

The manager daemon 58 establishes communication with the manager 20, forexample, via an ORB protocol, to retrieve the SAN topology datatherefrom. In some embodiments, the manager daemon 58 informs the mangerservice 38 of the user's security context to allow the manager 38 todetermine whether the user is eligible for viewing the requestedinformation. In addition, the manager daemon 58 maps the retrievedtopology information into sub-maps, and transmits the sub-maps to theNetView daemon 56.

Upon receiving the topology information, the NetView daemon 56 comparesthe new topology representation with a topology representationpreviously stored in the NetView database, such as illustrated NetViewobject database 54 a (FIG. 6), to determine whether the stored topologydata requires updating. If the NetView daemon detects changes betweenthe new and the old topology representations, it updates the topologydata in the database 54 a. The console 52 presents this updated topologyinformation to the user.

A SAN topology model presented to the operator/administrator on theNetView Console 52 may be updated as a result of theoperator/administrator's request in a manner described above.Alternatively, with reference to FIG. 6, the SAN topology model mayrequire updating when the SAN manager receives reports of topologychanges from the discover engine 40. In particular, as discussed above,one or more agents running on one or more hosts connected to the SAN canperiodically, or upon request by the discover engine 40 via the queryengine 46, obtain information regarding storage devices accessible totheir respective hosts, and transmit this information to the discoverengine 40. The discover engine 40 collates this information to determineany changes in the SAN topology, and if so, it reports the changes tothe SAN manager service 38.

FIG. 40 presents a flow diagram 366 that schematically depicts themanner in which this new topology data is transmitted from the SANmanager service 38 to the NetView console 52 for presentation to a user,e.g., the SAN administrator.

In particular, upon updating its database, the SAN manager 58 sends a“discover finished” event to the SAN manager daemon 58. The daemon 58 inturn retrieves the new topology information from the SAN manager 38, andmaps the topology information into sub-maps, as discussed above.Further, the SAN manager daemon 58 transmits these sub-maps to the SANNetView daemon 56. The NetView daemon 56 compares the new topology witha previous topology representation stored in its database to determinewhether an update of its topology representation is needed, and if so,it performs the update.

Dynamically Extending File Systems

The illustrated embodiment dynamically extends host file systems,without requiring operator intervention and without downtime of the hostplatform 12. A mechanism for such automatic extension is discussedbelow. Though discussed in connection with specified file systems, e.g.,AIX journal file system, Veritas file system (managed under a Solarisoperating system), Unix file systems (created using Veritas volumemanager and managed under a Solaris operating system), it will beappreciated that similar mechanisms can be utilized with hosts operatingunder other file systems.

Referring back to FIG. 33, in the illustrated embodiment, when an agent24 detects that the utilized portion of a file system associated with amanaged host 12 has exceeded a predefined threshold 244, 268 (or uponrequest of the SAN operator/administrator, or based on other criteria orconditions), it transmits an event notification to the manager 20. Themanager 20 determines, based on the predefined policy 240 whether thefile system of this managed host 12 should be extended. If thepredefined policy 240 mandates the extension of the file system, themanager 20 identifies which LUNs should be utilized and assigns one ormore identified LUNs to that host 12. Upon receiving the LUN IDs fromthe manager 20, the agent 24 that is operating on the host 12 extendsthe file system as discussed below.

Generally, the agent 24 executes the following steps to extend the filesystem:

-   -   1. Initialize the newly assigned LUNs by converting them to a        form understood by the host operating system. In some operating        systems, this is referred to as writing a signature to the        devices and is analogous to formatting a hard disk.    -   2. Create a logical representation (e.g., an “object”) of each        newly assigned LUN that corresponds to the underlying physical        devices.    -   3. Add the objects to the logical grouping that form the host        file system.    -   4. Increase the logical volume size of the file system by an        amount equal to the entire size of the newly added LUNs.    -   5. Increased the size of the file system to occupy the increased        logical volume size

In an embodiment of the invention for use with the AIX Journal filesystem, the agent extends the host file system by executing the steps of

-   -   1. Convert the newly assigned LUNs to physical volumes using        built-in host operating system features.    -   2. Add the physical volume(s) into the volume group of the file        system to be extended, using the host API.    -   3. Extend the logical volume onto the new assigned LUNs using        the host API.    -   4. Extend the file system by an amount equal to the capacity of        the newly assigned LUNs, again, using the host API.

Upon completion, the agent 24 notifies the manager 20 of the successfulfile extension (and, subsequently, the user). If any of the above stepsfail, the file system is not extended and the agent 24 notifies themanager 20 of the failure.

In an embodiment of the invention for use with, Veritas or Unix filesystems (created using Veritas volume manager and managed under aSolaris operating system) are dynamically extended. As above, once giventhe newly assigned disk ID(s) and the name of the file system to extend,the agent 24 automatically increases the file system and its underlyingvolume by an amount equal to the size of the assigned disks. Thespecific steps (analogous to those above) that the agent 24 performs toaccomplish this task are as follows.

-   -   1. The agent utilizes the host Solaris API to initialize the        LUNs by writing a new label to the newly assigned LUNs (this        equates with writing a signature to the disks).    -   2. The agent utilizes the Veritas API to configure the LUN(s)        for use with Veritas Volume manager by converting the newly        assigned LUN(s) into VM Disks (which are analogous to physical        volumes).    -   3. The agent utilizes the Veritas API to add the VM Disk(s) to        the disk group where the logical volume of the file system to be        extended resides.    -   4. The agent utilizes the Veritas API to increase the size of        the file system and its underlying volume by adding all the        available disk space from the assigned LUN(s).

As above, if any of the steps fail, the file system is not extended. Themanager 20 is notified of the success or failure of the file extensionprocedure.

FIG. 35 illustrates the process 308 that the agent 24 undertakes toextend file systems in accord with the invention. First, a new label iswritten to an assigned LUN 310. The newly labeled LUN 312 is theninitialized and configured for use with the Veritas volume manager (VM)by converting the LUN 312 into VM disks 314. This involves separatingthe LUN 314 into one or more partitions (in this example having a totalsize of 2 Gigabytes). The configured disk 322 is then added to a diskgroup 316 that contains the file system to be extended. In this example,disk group 316 already contains two volumes 318, 320, and the filesystem to be extended resides on one volume 318. All the available diskspace (2 Gigabytes) from the configured VM disk 322 is then added to thelogical volume 318, thereby increasing the size of the file system 324and its underlying volume 326.

Dynamically Enabling SAN Manager

Upon installation of software defining the agents 24 and manager 20,scanners in the agents operate as described above, e.g., to identifydevices connected to their respective hosts. That information istransmitted to the SAN manager 20 and, specifically, to the discoverengine 40 (and, therefrom, to the manager service 38) for generation ofa topological representation of the SAN. This is presented via thegraphical user interface, e.g., NetView console, to theoperator/administrator for purposes of making LUN assignments andotherwise administering the SAN.

If operated in the manner described above, the filter drivers 354 wouldprevent the hosts 12 from accessing any fiber channel storage devices 14at the time of installation of the agent software—because, at thatpoint, LUN assignments have not yet been made. This can be problematicwhen, for example, the installation is made over preexisting systems,insofar as users of the hosts 12 would be prevented from accessing thedevices until installation is complete and assignments are made. Tominimize such potential for interruption to users and hosts, theillustrated embodiment utilizes the mechanisms below to permit hostscanning, topology generation, and LUN assignment (among other SANfunctions) upon installation, without preventing the hosts fromaccessing storage devices—at least until such time as theoperator/administrator formally “deploys” the system.

Referring to FIG. 41, three flags that reside in a central store areutilized to determine whether the filter driver 354 is active or not,and whether preliminary LUN assignment is enabled. These flags, whichcan be bits, bytes, fields, records, or other indicators, are referredto here as “assign enable,” “fully enable,” and “disable.” The assignenable flag, when activated by the administrator, allows host/LUNassignments to be made (these have a pending status until deployed). Thefully enable flag, if set by the administrator, activates the filterdrivers 354. The disable flag, if set by the administrator, disables thefilter drivers 354. In the illustrated embodiment, the flags are storedin a configuration file 500 on the manager digital data processor 20,though in other embodiments the flags reside anywhere in the SAN (e.g.,together, independently or otherwise) accessible to the hosts 12 andmanager 20.

When the SAN software is first installed, the disable flag is set,thereby permitting the agents and scanners to act in the normal course,but prohibiting the filter driver 354 from intercepting and blockingstorage device claims for unassigned LUNs (or from otherwise blockingaccess to such LUNs). Hence, until deployment, the hosts 12 can accessall storage devices to which they are coupled via the interconnect 16.

In order to configure the SAN, the operator/administrator sets theassign enable flag in the configuration file 500 by selecting the enablebutton 116 a (or other user input field or option) on the graphical userinterface (GUI) shown in FIG. 19. This has the effect of allowingpreliminary host/LUN assignments to be made. Because the disable flag isstill set at this point, the hosts 12 can continue to access devices 14while the administrator is making pending assignments.

Once finished making preliminary host/LUN assignments, theoperator/administrator initiates activation of the filter driver 354, byselecting the deploy button 116 b (or other user input field or option)on the GUI, which has the effect of setting the fully enable flag. Insome embodiments, the filter drivers 354 are installed on theirrespective hosts 12 at the time the agent software is installed. Inthese embodiments, the filter drivers 354 are activated when the fullyenable flag is set. In the illustrated embodiment, selection of thedeploy button 116 b has the additional effect of causing the manager 20to download the filter drivers 354 to the respective agents the firstinstance. In either embodiment, selecting the deploy button 116 b cancause the hosts to reboot, e.g. after downloading of the filter driver354 and/or setting of the fully-enable flag, so that the storage deviceclaiming process can proceed as described earlier.

The operator/administrator can subsequently disable the filter drivers354 and, thereby, permit the hosts 12 to access all devices 14, byselecting the disable button 116 c on the GUI (shown in FIG. 19). Thisaction causes the disable flag in the configuration file 500 to be set,and the filter drivers 354 to be disabled.

The foregoing defines a two-step process. The first step is to enableassignments, and the second step is to deploy the agents (filterdrivers). If the operator/administrator is not concerned about a periodof no access, he/she can invoke the second step immediately after thefirst step. However, the administrator can also invoke the first step,make a preliminary set of Host/LUN assignments and then invoke thesecond step to deploy the agents. Doing so will provide theadministrator with continuous access (other than the time for a reboot)to those LUNs which have been assigned. Assignments made between the twosteps are displayed as “pending” until the second step (deployment) hasbeen completed. Until the second step is executed the filter driver 354is considered disabled and file extensions will not occur. The firststep only allows initial assignments to be made before masking isenabled.

Launching Device Specific Applications

As discussed above, a SAN according to the invention can include avariety of components, such as one or more digital data processorshosts, one or more storage device, and a switching fabric, having avariety of components, such as, switches, hubs, gateways, for providingcommunication between the hosts and the storage devices. Thesecomponents are typically acquired from different vendors, and havevarious application software associated therewith. For example, theswitching fabric components can have vendor-specific managementapplications that allow configuring and/or managing these components.

The illustrated embodiment permits the SAN operator/administrator toexecute these vendor-specific applications from a single graphical userinterface, to wit, that SAN manager GUI 20, in a manner described inmore detail below.

With reference to FIG. 6 and FIG. 42, the SAN manager service 38maintains a representation of the SAN that provides information, interalia, regarding the identity of the SAN components, and the connectivityof these components. In addition, the manager service 38 maintains forselected components, for example, the switching fabric components,information regarding management applications specific to them. Thesecan be applications, by way of non-limiting example, residing directlyon the components, applications invoked or effected through HTTP, telnetor other servers residing on the components or on proxy servicesresiding elsewhere, and/or via applications running on the SAN manageritself. This information is stored, for example, in a file, referred toherein as a “Rules” file, which identifies each of the selectedcomponents and the applications and communication interfaces supportedby that component, e.g., telnet, SNMP. In the illustrated embodiment, amark-up language, e.g, XML, is utilized to format the informationcontained in the Rules file, though in other formats may be used insteador in addition.

Information regarding the component management applications can beobtained from the operator/administrator (e.g., via prompt and/or menuoption when the respective components are first added to the system orsubsequently) and/or obtained directly from the components themselves.In the case of the latter, the information can be obtained viastandardized queries, such as Management Server queries or FC MANAGEMENTMIB queries. In the case of components that cannot respond to suchqueries with the necessary information (as where the correspondingmanagement application resides on the SAN manager itself) and/or thathave multiple management applications, any information obtained from thecomponent is augmented in the Rules file with information, e.g.,obtained from the operator/administrator, identifying the necessary orpreferred application.

The Netview server can effect retrieval of the SAN representation fromthe manager service 38 and the display of selected information discernedfrom the retrieved representation on the Netview console 52, asdescribed in detail above. In one embodiment, the Netview console 52displays a plurality of graphical objects, e.g., icons, each of whichrepresents one of the SAN components. Alternatively, a textual list ofthe SAN components can be displayed. Further, the Netview console 52provides an operator, e.g., the SAN administrator, with a user interfaceelement, such as keyboard or mouse, that permits selection of one of thedisplayed components.

The Netview server allows the operator to launch an application processassociated with a selected SAN component, such as, a managementapplication residing on that component, such as, a switch, in a mannerdescribed below. In response to the selection of a graphical objectrepresenting a SAN component, the Netview server accesses the Rules fileto obtain information regarding the application processes associatedwith that selected component, and effects the display of thisinformation, for example, in the form of a menu, on the Netview console52. In some embodiment, a plurality of management applications residingon a selected component are displayed while in other embodiments, onlythe primary management application is displayed. To facilitate thedisplay of information regarding on the SAN components on the Netviewconsole, in some embodiments, the Netview server stores the informationretrieved from the SAN manager service 58 regarding the applicationsresiding on the SAN components in a persistable storage.

The Netview server 54 responds to the selection of one of the displayedapplication processes by effecting the launching of that applicationprocess via an interface process, such as a web-based browserapplication, a telnet process, or an SNMP application. Moreparticularly, the Netview server 54 communicates with the SAN managerservice 38 to retrieve information, such as, launch method and itsrespective parameters, therefrom. The SAN manager service responds to arequest from the Netview server for the launch information by parsingthe Rules file to generate an object, e.g., an XML object, that containsthe requisite information, and transmits the information to the Netviewserver. The Netview server utilizes the object returned from the SANmanager service to effect the launching of the selected applicationprocess.

Once the selected application, e.g., a management application, islaunched, the operator can utilize the application, via the interfacesoftware provided by the Netview server, to configure and/or manage theSAN component on which the application resides. This advantageouslyallows the operator, e.g., the SAN administrator, to manage a variety ofSAN components, having different management applications, from a singleentry point, that is, from the Netview server/console.

A further appreciation of the illustrated embodiment may be from thediscussion below.

In the illustrated embodiment, the format of the rules file is comprisedof three sections—the version, the supported device types, and acollection of the individual device rules themselves.

-   -   Version Section

The version section is used to hold the version of the rules file and iscomprised of a major and a minor number. The San Manager software canhandle minor version changes, but will not allow launch to operate withmajor version changes. If new fields are added, this would be considereda major change to the rules file and the major number would need to beupdated along with the SAN Manager software. The addition If a new rule,a new device type, or a change in a current value, are considered minorchanges as the format remains the same.

-   -   Device Type Section

This section is used to hold all device types for which rules aredefined. If a rule is added for a device type that is not currentlyassociated with any rule, then this device type is added to the devicetypes section as one of the types.

For example, if the current version of the rules file contains switchesand hubs in the device type section and all the rules relate to switchesand hubs, then if another rule (say a CDRom) for a type other thanswitch or hub is added, a new type will be added to the device typesection.

-   -   Rule Section

The rules section is comprised of multiple rules—one or more rules permanaged device. The rule itself is comprised of two sections—the idsection and the management information section. The id section is usedto uniquely identify the device to be managed. The managementinformation section is a collection of multiple types of managementinformation, each one describing a certain method for managing theparticular device. There can be multiple management methods availablefor managing a particular device.

-   -   ID Section

The id section is comprised of a collection of parameters that are usedto uniquely identify the device that the rule represents. A rule matchis obtained by matching an object's attributes with the parameter valuescontained in the id section of the rule.

-   -   OR Operation

Normally, all parameters in the ID section are AND'ed together with theexception of the parameters with the same name that are listedconsecutively in the ID portion of the file, which are OR'ed together.For example, a sample ID portion of a rule is shown below. Note thatthere are two parameters with the same name (“Type”) in the ID portion.The software will interpret this as meaning that the ID is satisfiedwith an attribute value of “Switch” or “Hub”.

<ID> <Parameter> <Name> Vendor ID</Name> <Value>Brocade Communications,Inc.</Value> </Parameter> <Parameter> <Name>Type</Name><Value>Switch</Value> </Parameter> <Parameter> <Name>Type</Name><Value>Hub</Value> </Parameter> </ID>

To complete the example, the preceding ID is equivalent to the followinglogical expression:

Vendor ID=Brocade Communications, Inc. AND (Type=Switch OR Type=Hub).

-   -   Control Characters

Defined control characters are allowed in the rules file and causespecific actions to occur depending on the control character. Thefollowing is a list of the control characters provided in oneembodiment:

-   -   CONTROL_CHARACTER: “!”    -   DEFAULT_CHARACTER: “?”    -   WILDCARD_CHARACTER: “*”

CONTROL_CHARACTER: “!”—occurs before any other control type character.This is the main control character, which informs the software thatanother control type character exists.

DEFAULT_CHARACTER: “?”—the default character allows having a parametermatch if the device for which a rule is to be identified contains avalue for the parameter. For example, the following parameter can bepresent in the ID section of a rule:

<Parameter> <Name>Management Telnet Address</Name> <Value>!?</Value></Parameter>.

This indicates that if the device has a value for the attribute(parameter) Management Telnet Address, then this parameter is a match.Of course, all parameters must match for a complete ID match and thus arule match.

WILDCARD_CHARACTER: “*”—the wildcard character is used to allow anyvalue to be valid in a specific character of a parameter string. Ifthere is more than one character in a string that can contain any valueto be valid, then there are multiple wildcard characters in the Valuestring. For example, the following parameter:

<Parameter> <Name>Model</Name> <Value>Silkworm 1!***</Value></Parameter>.indicates that to match the Model attribute (parameter), a Value stringof Silkworm 1000-1999 will be accepted. Any number of control characterscan be contained in the wildcard character for a parameter value.However, in order for the wildcard character to work, it should containat least one control character. For example, “Silkworm 1***” would notwork properly. It would only work if the device's model number where thestring “Silkworm 1***” which is not what we would expect (1000-1999).The following example further illustrates this point:

<Parameter> <Name>Model</Name> <Value>Silkworm 1!*5*</Value></Parameter>.

The above example will accept any value in the 11^(th) and 13^(th)characters of the string. Only 1 control character is necessary in thestring even though the wildcard flags are separated. Although notnecessary, a control character can be put before each wildcardcharacter. The placement of the control character is also notimportant—it could be contained anywhere in the string. “!Silkworm 1***”would work just the same as the above example.

-   -   Management Information Section

Any particular rule can have one or more management informationsections. Each management information section describes a particularmanagement method for the device. In one embodiment, there are fourpossible management information types depicted below:

-   -   1. Telnet    -   2. URL    -   3. Application    -   4. SNMP.

The management information section is comprised of the following format:

-   -   Type—one of the four types listed above    -   Primary—a Boolean (True, False) value indicating if this is the        primary management method for the device.    -   Command—command section containing the command format and static        parameters (StaticParameters), and the discovered parameter        names (Name).

Below is a sample Management Information section of the rules file:

<ManagementInformation> <Type>Telnet</Type> <Primary>True</Primary><Command> <StaticParameters>%1</StaticParameters> <Name>ManagementTelnet Address</Name> </Command> </ManagementInformation>

The above management information section indicates that the type isTelnet, that this management information is the primary managementinformation for the device, and the command format is one discoveredparameter named “Management Telnet Address”.

-   -   Command Section

The command section contains a StaticParameters section and one or moreName sections. The StaticParameters section contains the command (ifthere is one), the format of the command, and any static parameters, ifany. The placement of Discovered parameters in the command format arerepresented by a “%” character with the characters immediately followingthe “%” indicating which number the parameter is in the list ofdiscovered parameters that follow. This numbering starts from 1.

The discovered parameters are stored by the Name section—one Namesection for each discovered parameter.

The command section in the above example shows no command, no staticparameters, and the format indicates that there exists one discoveredparameter. This is all shown by the %1. The one discovered parameter iscontained in the Name section and is “Management Telnet Address”. Sincetelnet is a command supplied by the operating system, the type aloneindicates what the command is and the Command section only needs tosupply the command format, any static parameters, and any discoveredparameters. This is also true of the URL and SNMP types. In fact, insome embodiments, only the Application type will have a command presentin the StaticParameters field—an example of this is shown below:

<ManagementInformation> <Type>Application</Type><Primary>False</Primary> <Command> <StaticParameters> managementApp -m%1 -p %2 -a %3</StaticParameters> <Name>Model</Name> <Name>Port</Name><Name>Management Address</Name> </Command> </ManagementInformation>

The example shows the type of management information is Application, andthat this is not the primary management method, and the command includesthe following:

-   -   Command and format—managementApp is the executable name and the        format of the command is “managementApp—m Model—p Port—a        Management Address.    -   Sample Rules File

Below is a sample rules file that contains only one rule.

<RulesFile> <Version> <Major>1</Major> <Minor>0</Minor> </Version><DeviceTypes> <Type>Switch</Type> <Type>Hub</Type> </DeviceTypes> <Rule><ID> <Parameter> <Name>Vendor ID</Name> <Value>Brocade Communications,Inc.</Value> </Parameter> <Parameter> <Name>Type</Name><Value>Switch</Value> </Parameter> <Parameter> <Name>Model</Name><Value>Silkworm 1!***</Value> </Parameter> </ID> <ManagementInformation><Type>Telnet</Type> <Primary>True</Primary> <Command><StaticParameters>%1</StaticParameters> <Name>Management TelnetAddress</Name> </Command> </ManagementInformation><ManagementInformation> <Type>URL</Type> <Primary>False</Primary><Command> <StaticParameters>%1</StaticParameters> <Name>Management URLAddress</Name> </Command> </ManagementInformation><ManagementInformation> <Type>SNMP</Type> <Primary>False</Primary><Command> <StaticParameters>%1 fcfe.mib</StaticParameters><Name>Management Snmp Address</Name> </Command> </ManagementInformation><ManagementInformation> <Type>SNMP</Type> <Primary>False</Primary><Command> <StaticParameters>%1 fcfe.mib</StaticParameters><Name>Management Snmp Address</Name> </Command> </ManagementInformation><ManagementInformation> <Type>SNMP</Type> <Primary>False</Primary><Command> <StaticParameters>%1 fcfe.mib</StaticParameters><Name>Management Snmp Address</Name> </Command> </ManagementInformation></Rule>

-   -   DTD Format

Below is shown the XML DTD for the rules file.

-   <!ELEMENT RulesFile (Version, DeviceTypes, Rule*)>-   <!ELEMENT Version (Major, Minor)>-   <!ELEMENT DeviceTypes (Type*)>-   <!ELEMENT Rule (ID, ManagementInformation*)>-   <!ELEMENT ID (Parameter*)>-   <!ELEMENT Parameter (Name, Value)>-   <!ELEMENT ManagementInformation (Type, Primary, Command)>-   <!ELEMENT Command (StaticParameters, Name*)>-   <!ELEMENT Type (#PCDATA)>-   <!ELEMENT Primary (#PCDATA)>-   <!ELEMENT StaticParameters (#PCDATA)>-   <!ELEMENT Name (#PCDATA)>-   <!ELEMENT Value (#PCDATA)>-   <!ELEMENT Major (#PCDATA)>-   <!ELEMENT Minor (#PCDATA)>    Interfacing with Multiple Host Platforms

The illustrated embodiment utilizes a component architecture as shown inFIG. 43 to facilitate implementation of the agents on hosts 12 of variedplatform types and, specifically, by way of example to facilitatecollecting scan information from multiple host platforms. Thisarchitecture also facilitates testing of agent implementations and thoseof aspects of the SAN manager 20 that process and generateagent-specific data.

Referring to FIG. 43, SAN manager 20 includes a service 510 whichprovides a communication interface for query engine 46 (of FIG. 6). Morespecifically, service 510 transmits and receives XML data to/from theagents 24. It interfaces with inband or outband handlers (see FIG. 6) ofengine 46, transmitting XML or other data generated by them to theagents 24, while receiving XML (or other) data from them for transfer tothe handlers.

Communication service 510 includes an agent registry 512 (correspondingto the same-named element of FIG. 6) that identifies agents “known” tothe SAN manager 20 via their (the agents) registering with the service510, e.g., at the time of the respective host deployment and/or boot-up.The registry 512 lists the agents by identifier and provides addresses(e.g., IP addresses or otherwise) through which they can be accessed,e.g., over LAN 18 or other medium via which the manager 20 and agents 24are coupled. Though the discussion that follows focuses on thecommunication service 510 of the query engine 46, those skilled in theart will appreciate that like functionality can be supplied with eventcorrelator 48 of SAN manager 20 and its counterparts event subAgents ofthe agents 24, as well as with other components of the SAN manager thatcommunicate with those agents.

Agents 24 reside on hosts 12 and operate in the manner described atlength elsewhere herein. Those hosts can be of a variety of platforms,including by non-limiting example Windows NT, Windows 2000, Aix,Solaris, and so forth. As noted above, each agent comprises a frameworkand subAgents, the latter representing major agent services orfunctions. In the illustrated embodiment, the framework and thoseportions of the subAgent implementations common to all host platformsare implemented in Java or other platform-independent code (i.e., codethat can be readily ported from platform to platform). This includes thesubAgent services that provide overall control of host/LUN masking, aswell as those that provide overall control of scanning, and so forth. Inthe illustration, this platform-independent code is labeled as “commoncode.” Filter drivers, device drivers and other aspects of agentimplementation that are platform specific are implemented in C or otherplatform-dependent code (i.e., code that is specific to each platform).This is represented in the drawing by names of the respectiveplatform-specific scanners (though, it can represent more than merelyscanners).

In the illustrated embodiment, a novel mechanism is utilized to providecommunication between the platform-independent modules and theplatform-dependent modules. Particularly, as such communicationpotentially crosses language barriers, the platform-dependent functionsare implemented as a standalone applications which accepts input viacommand line parameters and return the output through Standard Output orStandard Error. More simply put, the platform-independent functionsinvoke and communicate with the platform-dependent function via acommand line interface.

In operation, XML encoding requests, commands or data generated by thequery engine 46 is passed to communication service 510, along with anidentifier of the agent to which the same is to be directed. Service 510determines from registry 512 and address for the target agent andtransmits the data accordingly via LAN 18 (or other medium). The XML iscommunicated via CORBA in the illustrated embodiment, though otherprotocols and/or mechanisms can be used instead or in addition.Platform-independent modules comprising the agent framework andsubagents receive the XML requests, commands or data and process them inaccord with the implicated agent function and services. Processing thatrequires action of the platform-dependent modules are communicated tothem via the command line, as noted immediately above. Data and otherinformation generated by the platform-dependent modules is returned viaStandard Output, Standard Error or other such operating systemcommand-level environmental variables. In the illustrated embodimentthat data or other information, which is encoded by theplatform-dependent modules in XML (or other suitable format), istransmitted via the platform-independent framework or subAgents back tothe service 510, via LAN 18, for processing by the SAN manager.

An advantage of the architecture illustrated in FIG. 43 is that itseparates the platform dependent/independent components of the agentimplementations, e.g., at the subAgent/Scanner boundary. In addition tofacilitating development of agent implementations on a variety ofplatforms, this allows for great flexibility in testing. Thus, forexample, since the scanners or other platform-dependent modules areimplemented as stand-alone applications, they can be executedindependently for unit level testing.

Moreover, re-creation of agent output is easily accomplished byexecuting the standalone scanner and capturing the output in a file,which is later read by a modified version of the agent. That is, theagent executes an application and then receives the output by capturingthe Standard Output information. A modified version of the scanner orother platform-dependent module can simply read a file previouslycreated by a Scanner and outputing this file to Standard Out. Theinformation can be manually modified, to provide larger sets ofinformation that are not possible to physically configure or generatetest datasets for other difficult situations, and used as input by usingthe same modified module (which reads a previously generated file androutes the information to Standard Out).

Described herein are systems and methods achieving the objects set forthabove. Those skilled in the art will appreciate that the illustratedembodiments are mere examples of the invention and that other systemsand methods incorporating additions, modifications or other changestherein fall within the scope of the invention. By way of non-limitingexample, it will be appreciated that the system and methods describedherein can be implemented on any variety of manager and host digitaldata processor platforms. Further, it will be appreciated thatprogramming constructs in addition to and other than those describedabove may be used in practicing the invention. By way of still furthernon-limiting example, it will be appreciated that graphical userinterface techniques other than and/or in addition to those describedherein may be beneficially employed in systems and methods of theinvention. Still further, interconnection media and schemes in additionto and other than those described above can be used to supportcommunications between the managers, hosts and/or storage devices.

1. A method for managing a file system, comprising: executing a filesystem to access a first storage device; transmitting a message, by anagent, to a manager system; processing, by the manager system, a policyto determine whether the file system should be extended in response tothe message from the agent; communicating to the agent, by the managersystem, an assignment of second storage device in response todetermining that the file system should be extended; and configuring, bythe agent, the assigned second storage device for use with the filesystem to extend storage space available to the file system.
 2. Themethod of claim 1, wherein the agent configures the assigned secondstorage device by: initializing the assigned second storage device tomake the second storage device acccssibie to the file system; creatingat least one logical object for the second storage device; and addingthe created at least one logical object to a logical grouping of objectsthat form the file system.
 3. The method of claim 2, wherein the agentconfigures the assigned second storage device by further performing:increasing a logical volume size of the file system by available storagespace in the second storage device.
 4. The method of claim 2, whereininitializing the second storage device comprises formatting the secondstorage device.
 5. The method of claim 1, wherein the agent configuresthe assigned second storage device by: generating at least one physicalvolume from the assigned second storage device; adding the at least onegenerated physical volume to a grouping of physical volumes for the filesystem; and extending a logical volume of the file system to include theat least one physical volume of the second storage device.
 6. The methodof claim 1, further comprising: notifying, by the agent, the managersystem of successful completion of extending the file system to includethe assigned second storage device in response to successfullyconfiguring the second storage device for use by the file system.
 7. Themethod of claim 1, wherein the agent configures the assigned secondstorage device by: utilizing a file system application program interface(API) to initialize the assigned second storage device by writing to thesecond storage device to make the second storage device accessible tothe file system; utilizing a volume manager API to configure the secondstorage device as a volume manager storage device for use by a volumemanager program; and utilizing the volume manager API to add the volumemanager storage device to a disk group including the file system toextend.
 8. The method of claim 1, wherein at least one network enablescommunication among the first and second storage devices, a firstcomputing system in which the file system executes, and a secondcomputing system in which the manager system executes.
 9. The method ofclaim 8, wherein the agent executes in the first computing system. 10.The method of claim 8, wherein the at least one network comprises afirst network enabling communication between the first and secondcomputing systems and a second network enabling communication with thestorage devices.
 11. A method for managing a file system, comprising:executing a file system to access a first storage device; detecting, byan agent, that a utilized portion of the file system has exceeded apredefined threshold; transmitting a message, by the agent, to a managersystem in response to detecting that the utilized portion of the filesystem has exceeded the predefined threshold processing, by the managersystem, a policy to determine whether the file system should be extendedin response to the message from the agent; communicating to the agent,by the manager system, an assignment of a second storage device; andconfiguring, by the agent, the assigned second storage device for usewith the file system to extend storage space available to the filesystem.
 12. An agent program executing in a host system having a filesystem, wherein a network enables communication with a manager systemand a first and second storage devices, wherein the agent program isexecuted to cause the host system to perform: transmitting a message tothe manager system, wherein the manager system determines whether thefile system should be extended in response to the message from theagent; receiving a communication from the manager system of anassignment of the second storage device in response to the managersystem determining that the file system should be extended; andconfiguring the assigned second storage device for use with the filesystem to extend storage space available to the file system.
 13. Theagent program of claim 12, wherein the agent configures the assignedsecond storage device by: initializing the assigned second storagedevice to make the second storage device accessible to the file system;creating at least one logical object for the second storage device; andadding the created at least one logical object to a logical grouping ofobjects that form the file system.
 14. The agent program of claim 13,wherein the agent configures the assigned second storage device byfurther performing: increasing a logical volume size of the file systemby available storage space in the second storage device.
 15. The agentprogram of claim 13, wherein initializing the second storage devicecomprises formatting the second storage device.
 16. The agent program ofclaim 12, wherein the agent configures the assigned second storagedevice by: generating at least one physical volume from the assignedsecond storage device; adding the at least one generated physical volumeto a grouping of physical volumes for the file system; and extending alogical volume of the file system to include the at least one physicalvolume of the second storage device.
 17. The agent program of claim 12,wherein the agent is executed in the host system to further perform:notifying the manager system of successful completion of extending thefile system to include the assigned second storage device in response tosuccessfully configuring the second storage device for use by the filesystem.
 18. The agent program of claim 12, wherein the agent configuresthe assigned second storage device by: utilizing a file systemapplication program interface (API) to initialize the assigned secondstorage device by writing to the second storage device to make thesecond storage device accessible to the file system; utilizing a volumemanager API to configure the second storage device as a volume managerstorage device for use by a volume manager program; utilizing the volumemanager API to add the volume manager storage device to a disk groupincluding the file system to extend.
 19. An agent program executing in ahost system having a file system, wherein a network enablescommunication with a manager system and a first and second storagedevice, wherein the agent program is executed to cause the host systemto perform; detecting that a utilized portion of the file system hasexceeded a predefined threshold: transmitting a message to the managersystem in response to detecting that the utilized portion of the filesystem has exceeded the predefined threshold, wherein the manager systemdetermines whether the file system should be extended in response to themessage from the agent; receiving a communication from the managersystem of an assignment of the second storage device; and configuringthe assigned second storage device for use with the file system toextend storage space available to the file system.
 20. A manager systemmanaging a first and second storage devices over a network and incommunication with a host system executing a file system and an agent,comprising: a processor; program code executed by the processor toperform: (i) receiving a message transmitted by the agent in the hostsystem over the network; (ii) processing a policy to determine whetherthe file system should be extended in response to the message from theagent; (iii) communicating to the agent an assignment of the secondstorage device, wherein the agent configures the assigned second storagedevice for use with the file system to extend storage space available tothe file system in response to determining that the file system shouldbe extended.
 21. The system of claim 20, wherein the network comprises afirst network enabling communication between the manager system and hostsystem and a second network enabling communication with the storagedevices.
 22. A host system in communication with a manager system over anetwork, wherein the network enables communication among the host systemand a first and second storage devices, comprising: a file system usedto access the first storage device; an agent executing in the hostsystem to perform: (i) transmitting a message to the manager system,wherein the manager system determines whether the file system should beextended in response to the message from the agent; (ii) receiving fromthe manager system an assignment of the second storage device inresponse to the manager system determining that the file system shouldbe extended; and (iii) configuring the assigned second storage devicefor use with the file system to extend storage space available to thefile system.
 23. The system of claim 22, wherein the agent executing inthe host system configures the assigned second storage device by:initializing the assigned second storage device to make the secondstorage device accessible to the file system; creating at least onelogical object for the second storage device; and adding the created atleast one logical object to a logical grouping of objects that form thefile system.
 24. The system of claim 23, wherein the agent configuresthe assigned second storage device by further performing: increasing alogical volume size of the file system by available storage space in thesecond storage device.
 25. The system of claim 23, wherein the agentinitializes the second storage device by formatting the second storagedevice.
 26. The system of claim 22, wherein the agent configures theassigned second storage device by: generating at least one physicalvolume from the assigned second storage device; adding the at least onegenerated physical volume to a grouping of physical volumes for the filesystem; and extending a logical volume of the file system to include theat least one physical volume of the second storage device.
 27. Thesystem of claim 22, wherein the agent is further executed to perform:notifying the manager system of successful completion of extending thefile system to include the assigned second storage device in response tosuccessfully configuring the second storage device for use by the filesystem.
 28. The system of claim 22, further comprising: a volume managerprogram for managing attached storage devices, wherein the agentconfigures the assigned second storage device by: (i) utilizing a filesystem application program interface (API) to initialize the assignedsecond storage device by writing to the second storage device to makethe second storage device accessible to the file system; (ii) utilizinga volume manager API to call the volume manager program configure thesecond storage as a volume manager storage device for use by the volumemanager program; (iii) utilizing the volume manager API to call thevolume manager program to add the volume manager storage device to adisk group including the file system to extend.
 29. The system of claim22, wherein the network comprises a first network enabling communicationbetween the host system and the manager system and a second networkenabling communication among the host system and the storage devices.30. A host system in communication with a manager system over a network,wherein the network enables communication among the host system and afirst and second storage devices, comprising: a file system used toaccess the first storage device; an agent executing in the host systemto perform; (i) detecting that a utilized portion of the file system hasexceeded a predefined threshold; (ii) transmitting a message to themanager system in response to detecting that the utilized portion of thefile system has exceeded the predefined threshold, wherein the managersystem determines whether the file system should be extended in responseto the message from the agent; (iii) receiving from the manager systeman assignment of the second storage device; and (iv) configuring theassigned second storage device for use the with the file system toextend storage space available to the file system.